Dyskusja: Pascal...pytanie
Podgląd pojedynczego posta
Stary 10.12.2006, 02:32   #18
pawelblu
Recydywista - Wielokrotny
Zlotowicz
CDRinfo VIP
 
Avatar użytkownika pawelblu
 
Data rejestracji: 17.01.2003
Lokalizacja: Wawa
Posty: 5,265
pawelblu niedługo stanie się sławny ;) <50 - 149 pkt>pawelblu niedługo stanie się sławny ;) <50 - 149 pkt>
Cytat:
Napisany przez Patrix Podgląd Wiadomości
ok wypisywanie i szukanie sobie zrobiłem/poprawiłem - a jak wyglądałoby usuwanie elementu listy, bo to chyba bedzie wyglądać różnie w zależności czy to będzie początek listy (temp^.poprzednia = nil), środek listy (temp^.dana) czy koniec listy (temp^.nastepna = nil)

PS
Tak ale jak to zrozumiem na typie dwukierunkowym to jednokierunkowy wystarczy 'odchudzić'
Nie bedzie roznicy - schodzisz, wywalasz i przepinasz. a czy przepniesz null w jakies miejsce czy cos innego to bez znaczenia.

Nie rozumiem PS, ale wydaje mi sie ze dobrze myslisz.

Zrob moze lepiej ten stos

nil <- elem6 <- elem3 <- elem8 <- elem2 <- stos

dodanie elem5 (elem5 pokazuje na elem2, stos pokazuje na elem5)

nil <- elem6 <- elem3 <- elem8 <- elem2 <- elem 5 <- stos

wypsanie - tak jak masz.
szukanie - tak jak masz.

usuwanie.
sprawdzasz czy stos nie jest nil.
sprawdzasz czy stos^.wart = co trzeba jak tak to temp1=stos^.poprz stos^.poprz = nil, stos = temp1
jak nie znalazles to teraz temp2 = stos.
i potem lecimy i sprawdzamy temp2^.poprz^.wartosc (dana to dziwna nazwa BTW). Jak znajdziemy to przepinamy jak wyzej temp1=temp2^.poprz^.poprz; temp2^.poprz^.poprz = nil; temp2^.poprz = temp1.
i tak lecisz dopoki temp2^.poprz nie bedzie nilem

Proponuje poprzerabiac na funkcje i zastanowic sie jakie wartosci powinny byc zwracane. Np. jezeli usun moze zwracac liczbe usunietych wezlow (w szczegolnosci mozesz napisac tak zeby wszystkie wystapienia usuwal, ale tak czy inaczej powinienes zzewnatrz wiedziec czy cokolwiek udalo sie wyrzucic).
pawelblu jest offline   Odpowiedz cytując ten post