850 likes | 1.11k Views
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.
E N D
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 Usuwanie elementu: • z początku listy • z wnętrza listy • Z końca listy
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.
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ć.
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
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.
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 ‘.
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.
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.
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.
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.
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’.
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.
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’).
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’.
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.
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.
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.
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.
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’.
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.
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.
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’)
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.
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;
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’.
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.
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.
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.
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’)
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 )
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.
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;
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;
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
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
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)
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;
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’
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.
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.
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.
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.
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)
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)
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;
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.
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.
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.
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