1 / 85

Operacje na strukturach listowych

Operacje na strukturach listowych. Lista. Kolejka. Stos. Uruchom program dydaktyczny. MENU. LISTA JEDNOKIERUNKOWA Przykładowa lista LISTA DWUKIERUNKOWA Przykładowa lista LISTA CYKLICZNA Przykładowa lista. Wstawianie elementu: na początek listy do wnętrza listy na koniec listy.

manon
Download Presentation

Operacje na strukturach listowych

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Operacje na strukturach listowych Lista Kolejka Stos Uruchom program dydaktyczny

  2. MENU LISTA JEDNOKIERUNKOWA Przykładowa lista LISTA DWUKIERUNKOWA • Przykładowa lista LISTA CYKLICZNA • Przykładowa lista • Wstawianie elementu: • na początek listy • do wnętrza listy • na koniec listy Usuwanie elementu: • z początku listy • z wnętrza listy • Z końca listy

  3. MENU Przykładowa lista jednokierunkowa Wskaźnik do następnego elementu Wskaźnik do pierwszego elementu Next Dane / Kasia Ola Beata First Pole z danymi użytkowymi type pElement = ^tElement; tElement = record Next : pElement; Dane : string; end; var First : pElement; Powyższy kod przedstawia implementację wskaźnikową ,strukturę elementu listy. Pole z danymi użytkowymi może zawierać cokolwiek: liczbę, znak, rekord. W prezentowanym przykładzie jest to łańcuch.

  4. MENU Wskaźnik do następnego elementu Wstawianie elementu na początek listy NewOne Next Dane Pole z danymi użytkowymi / Kasia Ola Beata Ania First procedure DodajNaPoczatek (wartosc : string); var newOne : pElement; begin New(newOne); newOne^.next := first; newOne^.dane := wartosc; first := newOne; end; W prezentowanym przykładzie parametr wartość = ‘Asia’. Nacisnij spacje lub kliknij aby kontynuować.

  5. MENU Wskaźnik do następnego elementu Wstawianie elementu na początek listy NewOne Next Dane Pole z danymi użytkowymi / Kasia Ola Beata Ania First procedure DodajNaPoczatek (wartosc : string); var newOne : pElement; begin New(newOne); newOne^.next := first; newOne^.dane := wartosc; first := newOne; end; Za pomocą procedury NEW przydzielamy miejsce w pamięci dla nowego elementu

  6. MENU Wskaźnik do następnego elementu Wstawianie elementu na początek listy NewOne Next Dane Pole z danymi użytkowymi / Kasia Ola Beata Ania First procedure DodajNaPoczatek (wartosc : string); var newOne : pElement; begin New(newOne); newOne^.next := first; newOne^.dane := wartosc; first := newOne; end; Wskaźnik NEXT nowego elementu przyjmuje wartość wskaźnika FIRST, czyli wskazuje na pierwszy element listy.

  7. MENU Wskaźnik do następnego elementu Wstawianie elementu na początek listy NewOne Next Dane Asia Pole z danymi użytkowymi / Kasia Ola Beata Ania First procedure DodajNaPoczatek (wartosc : string); var newOne : pElement; begin New(newOne); newOne^.next := first; newOne^.dane := wartosc; first := newOne; end; Pole z danymi użytkowymi nowego elementu przyjmuje wartość przekazaną przez parametr wartość, w tym przypadku jest to łańcuch ‘ Asia ‘.

  8. MENU Wskaźnik do następnego elementu Wstawianie elementu na początek listy NewOne Next Dane Asia Pole z danymi użytkowymi / Kasia Ola Beata Ania First procedure DodajNaPoczatek (wartosc : string); var newOne : pElement; begin New(newOne); newOne^.next := first; newOne^.dane := wartosc; first := newOne; end; Wskaźnik FIRST przyjmuje wartość wskaźnika NEWONE , czyli nowy element staje się pierwszym elementem w liście.

  9. MENU Wskaźnik do następnego elementu Wstawianie elementu na początek listy NewOne Next Dane Asia Pole z danymi użytkowymi / Kasia Ola Beata Ania First procedure DodajNaPoczatek (wartosc : string); var newOne : pElement; begin New(newOne); newOne^.next := first; newOne^.dane := wartosc; first := newOne; end; Wskaźnik FIRST przyjmuje wartość wskaźnika NEWONE , czyli nowy element staje się pierwszym elementem w liście.

  10. Dodaj za elemento podanej watrości MENU Wskaźnik do następnego elementu Wstawianie elementu do wnętrza listy Przed element o podanej watrości NewOne Next Dane Pole z danymi użytkowymi / Kasia Ola Beata Ania First Temp procedure DodajPrzedWartosc (szukana,nowa : string); var newOne,temp : pElement; begin temp := first; while(temp^.next <> nil) and (temp^.dane <> szukana) do temp := temp^.next; if temp^.dane = szukana then begin New(newOne); newOne^ := temp^; temp^.dane := nowa; temp^.next := newOne; end; end; W prezentowanym przykładzie parametr szukana = ‘Beata’, natomiast nowa = ‘Aga’. Wskaźnik TEMP potrzebny jest do odnalezienia szukanego elementu.

  11. MENU Wskaźnik do następnego elementu Wstawianie elementu do wnętrza listy Przed element o podanej watrości NewOne Next Dane Pole z danymi użytkowymi / Kasia Ola Beata Ania First Temp procedure DodajPrzedWartosc (szukana,nowa : string); var newOne,temp : pElement; begin temp := first; while(temp^.next <> nil) and (temp^.dane <> szukana) do temp := temp^.next; if temp^.dane = szukana then begin New(newOne); newOne^ := temp^; temp^.dane := nowa; temp^.next := newOne; end; end; Zaczynamy przeglądać liste - wskaźnik TEMP wskazuje na pierwszy element.

  12. MENU Wskaźnik do następnego elementu Wstawianie elementu do wnętrza listy Przed element o podanej watrości NewOne Next Dane Pole z danymi użytkowymi / Kasia Ola Beata Ania First Temp procedure DodajPrzedWartosc (szukana,nowa : string); var newOne,temp : pElement; begin temp := first; while(temp^.next <> nil) and (temp^.dane <> szukana) do temp := temp^.next; if temp^.dane = szukana then begin New(newOne); newOne^ := temp^; temp^.dane := nowa; temp^.next := newOne; end; end; Przechodzimy do kolejnych elementów listy, aż znajdziemy szukany element. W tym przykładzie jest to łańcuch = ‘Beata’.

  13. MENU Wskaźnik do następnego elementu Wstawianie elementu do wnętrza listy Przed element o podanej watrości NewOne Next Dane Pole z danymi użytkowymi / Kasia Ola Beata Ania First Temp procedure DodajPrzedWartosc (szukana,nowa : string); var newOne,temp : pElement; begin temp := first; while(temp^.next <> nil) and (temp^.dane <> szukana) do temp := temp^.next; if temp^.dane = szukana then begin New(newOne); newOne^ := temp^; temp^.dane := nowa; temp^.next := newOne; end; end; Za pomocą procedury NEW przydzielamy miejsce w pamięci dla nowego elementu.

  14. MENU Wskaźnik do następnego elementu Wstawianie elementu do wnętrza listy Przed element o podanej watrości NewOne Next Dane Beata Pole z danymi użytkowymi / Kasia Ola Beata Ania First Temp procedure DodajPrzedWartosc (szukana,nowa : string); var newOne,temp : pElement; begin temp := first; while(temp^.next <> nil) and (temp^.dane <> szukana) do temp := temp^.next; if temp^.dane = szukana then begin New(newOne); newOne^ := temp^; temp^.dane := nowa; temp^.next := newOne; end; end; Nowy element przyjmuje wartość elementu wyznaczonego przez wskaźnik TEMP. Zarówno wskaźnik do następnego elementu, jak i pole z danymi (łańcuch =‘Beata’).

  15. MENU Wskaźnik do następnego elementu Wstawianie elementu do wnętrza listy Przed element o podanej watrości NewOne Next Dane Beata Pole z danymi użytkowymi / Kasia Ola Beata Aga Ania First Temp procedure DodajPrzedWartosc (szukana,nowa : string); var newOne,temp : pElement; begin temp := first; while(temp^.next <> nil) and (temp^.dane <> szukana) do temp := temp^.next; if temp^.dane = szukana then begin New(newOne); newOne^ := temp^; temp^.dane := nowa; temp^.next := newOne; end; end; Pole z dana elementu wyznaczonego przez wskaźnik TEMP przyjmuje wartość parametru NOWA W tym przypadku łańcuch=‘Aga’.

  16. MENU Wskaźnik do następnego elementu Wstawianie elementu do wnętrza listy Przed element o podanej watrości NewOne Next Dane Beata Pole z danymi użytkowymi / Kasia Ola Aga Ania First Temp procedure DodajPrzedWartosc (szukana,nowa : string); var newOne,temp : pElement; begin temp := first; while(temp^.next <> nil) and (temp^.dane <> szukana) do temp := temp^.next; if temp^.dane = szukana then begin New(newOne); newOne^ := temp^; temp^.dane := nowa; temp^.next := newOne; end; end; Natomiast wskaźnik NEXT elementu wyznaczonego przez wskaźnik TEMP przyjmuje wartość wskaźnika NEWONE.

  17. MENU Wskaźnik do następnego elementu Wstawianie elementu do wnętrza listy Przed element o podanej watrości NewOne Next Dane Beata Pole z danymi użytkowymi / Kasia Ola Aga Ania First Temp procedure DodajPrzedWartosc (szukana,nowa : string); var newOne,temp : pElement; begin temp := first; while(temp^.next <> nil) and (temp^.dane <> szukana) do temp := temp^.next; if temp^.dane = szukana then begin New(newOne); newOne^ := temp^; temp^.dane := nowa; temp^.next := newOne; end; end; Takim sposobem wstawiliśmy nowy element przed element o podanej wartości. W rzeczywistości operacja ta polegała na wstawieniu za szukany element i zamienieniu kolejności tych dwóch elementów.

  18. MENU Wskaźnik do następnego elementu Wstawianie elementu do wnętrza listy Za element o podanej watrości NewOne Next Dane Pole z danymi użytkowymi / Kasia Ola Beata Ania First Temp procedure DodajZaWartosc (szukana,nowa : string); var newOne,temp : pElement; begin temp := first; while(temp^.next <> nil) and (temp^.dane <> szukana) do temp := temp^.next; if temp^.dane = szukana then begin New(newOne); newOne^.next := temp^.next; newOne^.dane := nowa; temp^.next := newOne; end; end; W prezentowanym przykładzie parametr szukana = ‘Beata’, natomiast nowa = ‘Marta’. Wskaźnik TEMP potrzebny jest do odnalezienia szukanego elementu.

  19. MENU Wskaźnik do następnego elementu Wstawianie elementu do wnętrza listy Za element o podanej watrości NewOne Next Dane Pole z danymi użytkowymi / Kasia Ola Beata Ania First Temp procedure DodajZaWartosc (szukana,nowa : string); var newOne,temp : pElement; begin temp := first; while(temp^.next <> nil) and (temp^.dane <> szukana) do temp := temp^.next; if temp^.dane = szukana then begin New(newOne); newOne^.next := temp^.next; newOne^.dane := nowa; temp^.next := newOne; end; end; Zaczynamy przeglądać liste - wskaźnik TEMP wskazuje na pierwszy element.

  20. MENU Wskaźnik do następnego elementu Wstawianie elementu do wnętrza listy Za element o podanej watrości NewOne Next Dane Pole z danymi użytkowymi / Kasia Ola Beata Ania First Temp procedure DodajZaWartosc (szukana,nowa : string); var newOne,temp : pElement; begin temp := first; while(temp^.next <> nil) and (temp^.dane <> szukana) do temp := temp^.next; if temp^.dane = szukana then begin New(newOne); newOne^.next := temp^.next; newOne^.dane := nowa; temp^.next := newOne; end; end; Przechodzimy do kolejnych elementów listy, aż znajdziemy szukany element. W tym przykładzie jest to łańcuch = ‘Beata’.

  21. MENU Wskaźnik do następnego elementu Wstawianie elementu do wnętrza listy Za element o podanej watrości NewOne Next Dane Pole z danymi użytkowymi / Kasia Ola Beata Ania First Temp procedure DodajZaWartosc (szukana,nowa : string); var newOne,temp : pElement; begin temp := first; while(temp^.next <> nil) and (temp^.dane <> szukana) do temp := temp^.next; if temp^.dane = szukana then begin New(newOne); newOne^.next := temp^.next; newOne^.dane := nowa; temp^.next := newOne; end; end; Za pomocą procedury NEW przydzielamy miejsce w pamięci dla nowego elementu.

  22. MENU Wskaźnik do następnego elementu Wstawianie elementu do wnętrza listy Za element o podanej watrości NewOne Next Dane Pole z danymi użytkowymi / Kasia Ola Beata Ania First Temp procedure DodajZaWartosc (szukana,nowa : string); var newOne,temp : pElement; begin temp := first; while(temp^.next <> nil) and (temp^.dane <> szukana) do temp := temp^.next; if temp^.dane = szukana then begin New(newOne); newOne^.next := temp^.next; newOne^.dane := nowa; temp^.next := newOne; end; end; Wskaźnik NEXT nowego elementu przyjmuje wartość wskaźnika NEXT elementu wyznaczonego przez wskaźnik TEMP.

  23. MENU Wskaźnik do następnego elementu Wstawianie elementu do wnętrza listy Za element o podanej watrości NewOne Next Dane Marta Pole z danymi użytkowymi / Kasia Ola Beata Ania First Temp procedure DodajZaWartosc (szukana,nowa : string); var newOne,temp : pElement; begin temp := first; while(temp^.next <> nil) and (temp^.dane <> szukana) do temp := temp^.next; if temp^.dane = szukana then begin New(newOne); newOne^.next := temp^.next; newOne^.dane := nowa; temp^.next := newOne; end; end; Dana nowego elementu przyjmuje wartość parametru nowa (łańcuch =‘Marta’)

  24. MENU Wskaźnik do następnego elementu Wstawianie elementu do wnętrza listy Za element o podanej watrości NewOne Next Dane Marta Pole z danymi użytkowymi / Kasia Ola Beata Ania First Temp procedure DodajZaWartosc (szukana,nowa : string); var newOne,temp : pElement; begin temp := first; while(temp^.next <> nil) and (temp^.dane <> szukana) do temp := temp^.next; if temp^.dane = szukana then begin New(newOne); newOne^.next := temp^.next; newOne^.dane := nowa; temp^.next := newOne; end; end; Natomiast wskaźnik NEXT elementu wyznaczonego przez wskaźnik TEMP przyjmuje wartość wskaźnika NEWONE.

  25. MENU Wskaźnik do następnego elementu Wstawianie elementu do wnętrza listy Za element o podanej watrości NewOne Next Dane Marta Pole z danymi użytkowymi / Kasia Ola Beata Ania First Temp procedure DodajZaWartosc (szukana,nowa : string); var newOne,temp : pElement; begin temp := first; while(temp^.next <> nil) and (temp^.dane <> szukana) do temp := temp^.next; if temp^.dane = szukana then begin New(newOne); newOne^.next := temp^.next; newOne^.dane := nowa; temp^.next := newOne; end; end;

  26. MENU Wskaźnik do następnego elementu Wstawianie elementu na koniec listy NewOne Next Dane Pole z danymi użytkowymi / Kasia Ola Beata Ania First Temp procedure DodajNaKoniec (wartosc : string); var newOne,temp : pElement; begin if first = nil then DodajNaPoczatek(wartosc) else begin new(newOne); temp := first; while temp^.next <> nil do temp := temp^.next; newOne^.dane := wartosc; newOne^.next := temp^.next; temp^.next := newOne; end; end; W prezentowanym przykładzie parametr wartość = ‘Zosia’.

  27. MENU Wskaźnik do następnego elementu Wstawianie elementu na koniec listy NewOne Next Dane Pole z danymi użytkowymi / Kasia Ola Beata Ania First Temp procedure DodajNaKoniec (wartosc : string); var newOne,temp : pElement; begin if first = nil then DodajNaPoczatek(wartosc) else begin new(newOne); temp := first; while temp^.next <> nil do temp := temp^.next; newOne^.dane := wartosc; newOne^.next := temp^.next; temp^.next := newOne; end; end; Za pomocą procedury NEW przydzielamy miejsce w pamięci dla nowego elementu.

  28. MENU Wskaźnik do następnego elementu Wstawianie elementu na koniec listy NewOne Next Dane Pole z danymi użytkowymi / Kasia Ola Beata Ania First Temp procedure DodajNaKoniec (wartosc : string); var newOne,temp : pElement; begin if first = nil then DodajNaPoczatek(wartosc) else begin new(newOne); temp := first; while temp^.next <> nil do temp := temp^.next; newOne^.dane := wartosc; newOne^.next := temp^.next; temp^.next := newOne; end; end; Zaczynamy przeglądać liste - wskaźnik TEMP wskazuje na pierwszy element.

  29. MENU Wskaźnik do następnego elementu Wstawianie elementu na koniec listy NewOne Next Dane Pole z danymi użytkowymi / Kasia Ola Beata Ania First Temp procedure DodajNaKoniec (wartosc : string); var newOne,temp : pElement; begin if first = nil then DodajNaPoczatek(wartosc) else begin new(newOne); temp := first; while temp^.next <> nil do temp := temp^.next; newOne^.dane := wartosc; newOne^.next := temp^.next; temp^.next := newOne; end; end; Przechodzimy do kolejnych elementów listy, aż znajdziemy ostatni element listy.

  30. MENU Wskaźnik do następnego elementu Wstawianie elementu na koniec listy NewOne Next Dane Zosia Pole z danymi użytkowymi / Kasia Ola Beata Ania First Temp procedure DodajNaKoniec (wartosc : string); var newOne,temp : pElement; begin if first = nil then DodajNaPoczatek(wartosc) else begin new(newOne); temp := first; while temp^.next <> nil do temp := temp^.next; newOne^.dane := wartosc; newOne^.next := temp^.next; temp^.next := newOne; end; end; Dana nowego elementu przyjmuje wartość parametru nowa (łańcuch =‘Zosia’)

  31. MENU Wskaźnik do następnego elementu Wstawianie elementu na koniec listy NewOne Next / Dane Zosia Pole z danymi użytkowymi / Kasia Ola Beata Ania First Temp procedure DodajNaKoniec (wartosc : string); var newOne,temp : pElement; begin if first = nil then DodajNaPoczatek(wartosc) else begin new(newOne); temp := first; while temp^.next <> nil do temp := temp^.next; newOne^.dane := wartosc; newOne^.next := temp^.next; temp^.next := newOne; end; end; Wskaźnik NEXT elementu przyjmuje wartość NIL ( puste wskazanie )

  32. MENU Wskaźnik do następnego elementu Wstawianie elementu na koniec listy NewOne Next / Dane Zosia Pole z danymi użytkowymi / Kasia Ola Beata Ania First Temp procedure DodajNaKoniec (wartosc : string); var newOne,temp : pElement; begin if first = nil then DodajNaPoczatek(wartosc) else begin new(newOne); temp := first; while temp^.next <> nil do temp := temp^.next; newOne^.dane := wartosc; newOne^.next := temp^.next; temp^.next := newOne; end; end; Natomiast wskaźnik NEXT elementu wyznaczonego przez wskaźnik TEMP przyjmuje wartość wskaźnika NEWONE.

  33. MENU Wskaźnik do następnego elementu Wstawianie elementu na koniec listy NewOne Next / Dane Zosia Pole z danymi użytkowymi Kasia Ola Beata Ania First Temp procedure DodajNaKoniec (wartosc : string); var newOne,temp : pElement; begin if first = nil then DodajNaPoczatek(wartosc) else begin new(newOne); temp := first; while temp^.next <> nil do temp := temp^.next; newOne^.dane := wartosc; newOne^.next := temp^.next; temp^.next := newOne; end; end;

  34. MENU Wskaźnik do następnego elementu Usuwanie elementu z początku listy Next ToDel Dane Pole z danymi użytkowymi / Kasia Ola Beata Ania First procedure UsunPoczatek; var toDel : pElement; begin if first <> nil then begin toDel := first; first := first^.next; dispose(toDel); end; end;

  35. MENU Wskaźnik do następnego elementu Usuwanie elementu z początku listy Next ToDel Dane Pole z danymi użytkowymi / Kasia Ola Beata Ania First procedure UsunPoczatek; var toDel : pElement; begin if first <> nil then begin toDel := first; first := first^.next; dispose(toDel); end; end; Wskaźnik TODEL przyjmuje wartość wskaźnika FIRST czyli wskazuje na pierwszy element listy

  36. MENU Wskaźnik do następnego elementu Usuwanie elementu z początku listy Next ToDel Dane Pole z danymi użytkowymi / Kasia Ola Beata Ania First procedure UsunPoczatek; var toDel : pElement; begin if first <> nil then begin toDel := first; first := first^.next; dispose(toDel); end; end; Pierwszym elementem listy staje się dotychczas drugi element s

  37. MENU Wskaźnik do następnego elementu Usuwanie elementu z początku listy Next ToDel Dane Pole z danymi użytkowymi / Kasia Ola Beata Ania First procedure UsunPoczatek; var toDel : pElement; begin if first <> nil then begin toDel := first; first := first^.next; dispose(toDel); end; end; Element, który był pierwszy zostaje zwolniony z pamięci (usunięty)

  38. MENU Wskaźnik do następnego elementu Usuwanie elementu z początku listy Next ToDel Dane Pole z danymi użytkowymi / Ola Beata Ania First procedure UsunPoczatek; var toDel : pElement; begin if first <> nil then begin toDel := first; first := first^.next; dispose(toDel); end; end;

  39. MENU Wskaźnik do następnego elementu Usuwanie elementu z wnętrza listy Next ToDel Dane Pole z danymi użytkowymi / Kasia Ola Beata Ania First Temp procedure UsunWartosc (wartosc : string); var toDel,temp : pElement; begin toDel := first; if first^.dane = wartosc then first := first^.next else while(toDel^.next <> nil) and (toDel^.dane <> wartosc)do begin temp := toDel; toDel := toDel^.next; end; if toDel^.dane = wartosc then begin temp^.next := toDel^.next; dispose(toDel); end; end; W prezentowanym przykładzie parametr wartosc = ‘Ola’

  40. MENU Wskaźnik do następnego elementu Usuwanie elementu z wnętrza listy Next ToDel Dane Pole z danymi użytkowymi / Kasia Ola Beata Ania First Temp procedure UsunWartosc (wartosc : string); var toDel,temp : pElement; begin toDel := first; if first^.dane = wartosc then first := first^.next else while(toDel^.next <> nil) and (toDel^.dane <> wartosc)do begin temp := toDel; toDel := toDel^.next; end; if toDel^.dane = wartosc then begin temp^.next := toDel^.next; dispose(toDel); end; end; Wskaźnik TODEL wskazuje na pierwszy element listy.

  41. MENU Wskaźnik do następnego elementu Usuwanie elementu z wnętrza listy Next ToDel Dane Pole z danymi użytkowymi / Kasia Ola Beata Ania First Temp procedure UsunWartosc (wartosc : string); var toDel,temp : pElement; begin toDel := first; if first^.dane = wartosc then first := first^.next else while(toDel^.next <> nil) and (toDel^.dane <> wartosc)do begin temp := toDel; toDel := toDel^.next; end; if toDel^.dane = wartosc then begin temp^.next := toDel^.next; dispose(toDel); end; end; Wskaźnik TEMP wskazuje na pierwszy element listy.

  42. MENU Wskaźnik do następnego elementu Usuwanie elementu z wnętrza listy Next ToDel Dane Pole z danymi użytkowymi / Kasia Ola Beata Ania First Temp procedure UsunWartosc (wartosc : string); var toDel,temp : pElement; begin toDel := first; if first^.dane = wartosc then first := first^.next else while(toDel^.next <> nil) and (toDel^.dane <> wartosc)do begin temp := toDel; toDel := toDel^.next; end; if toDel^.dane = wartosc then begin temp^.next := toDel^.next; dispose(toDel); end; end; Wskaźnik TODEL wskazuje na kolejny element listy.

  43. MENU Wskaźnik do następnego elementu Usuwanie elementu z wnętrza listy Next ToDel Dane Pole z danymi użytkowymi / Kasia Ola Beata Ania First Temp procedure UsunWartosc (wartosc : string); var toDel,temp : pElement; begin toDel := first; if first^.dane = wartosc then first := first^.next else while(toDel^.next <> nil) and (toDel^.dane <> wartosc)do begin temp := toDel; toDel := toDel^.next; end; if toDel^.dane = wartosc then begin temp^.next := toDel^.next; dispose(toDel); end; end; Wskaźnik NEXT elementu wyznaczonego przez TEMP wskazuje na kolejny element po szukanym.

  44. MENU Wskaźnik do następnego elementu Usuwanie elementu z wnętrza listy Next ToDel Dane Pole z danymi użytkowymi / Kasia Ola Beata Ania First Temp procedure UsunWartosc (wartosc : string); var toDel,temp : pElement; begin toDel := first; if first^.dane = wartosc then first := first^.next else while(toDel^.next <> nil) and (toDel^.dane <> wartosc)do begin temp := toDel; toDel := toDel^.next; end; if toDel^.dane = wartosc then begin temp^.next := toDel^.next; dispose(toDel); end; end; Element wyznaczony przez wskaźnik TODEL zostaje zwolniony z pamięci (usunięty)

  45. MENU Wskaźnik do następnego elementu Usuwanie elementu z wnętrza listy Next ToDel Dane Pole z danymi użytkowymi / Kasia Beata Ania First Temp procedure UsunWartosc (wartosc : string); var toDel,temp : pElement; begin toDel := first; if first^.dane = wartosc then first := first^.next else while(toDel^.next <> nil) and (toDel^.dane <> wartosc)do begin temp := toDel; toDel := toDel^.next; end; if toDel^.dane = wartosc then begin temp^.next := toDel^.next; dispose(toDel); end; end; Element wyznaczony przez wskaźnik TODEL zostaje zwolniony z pamięci (usunięty)

  46. MENU Wskaźnik do następnego elementu Usuwanie elementu z końca listy Next ToDel Dane Pole z danymi użytkowymi / Kasia Ola Beata Ania First Temp procedure UsunKoniec; var toDel,temp : pElement; begin toDel := first; if first^.next = nil then first := nil else begin while toDel^.next <> nil do begin temp := toDel; toDel := toDel^.next; end; temp^.next := nil; end; dispose(toDel); end;

  47. MENU Wskaźnik do następnego elementu Usuwanie elementu z końca listy Next ToDel Dane Pole z danymi użytkowymi / Kasia Ola Beata Ania First Temp procedure UsunKoniec; var toDel,temp : pElement; begin toDel := first; if first^.next = nil then first := nil else begin while toDel^.next <> nil do begin temp := toDel; toDel := toDel^.next; end; temp^.next := nil; end; dispose(toDel); end; Wskaźnik TODEL wskazuje na pierwszy element listy.

  48. MENU Wskaźnik do następnego elementu Usuwanie elementu z końca listy Next ToDel Dane Pole z danymi użytkowymi / Kasia Ola Beata Ania First Temp procedure UsunKoniec; var toDel,temp : pElement; begin toDel := first; if first^.next = nil then first := nil else begin while toDel^.next <> nil do begin temp := toDel; toDel := toDel^.next; end; temp^.next := nil; end; dispose(toDel); end; Wskaźnik TEMP wskazuje element wskazywany przez wskaźnik TODEL.

  49. MENU Wskaźnik do następnego elementu Usuwanie elementu z końca listy Next ToDel Dane Pole z danymi użytkowymi / Kasia Ola Beata Ania First Temp procedure UsunKoniec; var toDel,temp : pElement; begin toDel := first; if first^.next = nil then first := nil else begin while toDel^.next <> nil do begin temp := toDel; toDel := toDel^.next; end; temp^.next := nil; end; dispose(toDel); end; Wskaźnik TODEL wskazuje na kolejny element listy.

  50. MENU Wskaźnik do następnego elementu Usuwanie elementu z końca listy Next ToDel Dane Pole z danymi użytkowymi / Kasia Ola Beata Ania First Temp procedure UsunKoniec; var toDel,temp : pElement; begin toDel := first; if first^.next = nil then first := nil else begin while toDel^.next <> nil do begin temp := toDel; toDel := toDel^.next; end; temp^.next := nil; end; dispose(toDel); end; Wskaźnik TEMP wskazuje element wskazywany przez wskaźnik TODEL

More Related