Skocz do zawartości

Lista jednokierunkowa na wskaźnikach.


Bobas4

Polecane posty

Witam wszystkich jako nowy użytkownik tego forum.

Dwa dni temu na studiach dostaliśmy na zadanie projekt w pascalu. Mam do zrobienia listę jednokierunkową na wskaźnikach gdzie dam=nymi będą imie studenta, kierunek studniów i rok studiów. Muszę mieć pięć procedur: jedna musi dodawać element do listy pobierając dane z klawiatury, druga sortować elementy malejąco wg. roku lub rosnąco wg imienia, trzecia usuwać element o określonym imieniu, czwarta wyświetlić całą listę a piąta usunąć listę.

 

Nie miałem problemu z dodaniem elementu, wyświetleniem i usunięciem listy. Ale kiedy próbuję usunąć jakiś element ostatni mi się podwaja. Tzn na miejsce tego elementu, który chcę usunąć "wskakuje" mi kolejny itd aż do końca listy, ale ostatni zostaje podwójnie - nie wiem jak usunąć ostatni element listy. Szukałem oczywiście w google ale niewiele zrozumiałem z tych algorytmów, albo po prostu nie działały. Oto moja procedura:

procedure UsunWybrany (var Lista: TLista; imie: string);

var w : PElem;

begin

w:=Lista;

while w <> NIL do

begin

if (imie=w^.Imie) then

begin

dispose(w);

while w^.Nast <> NIL do

begin

w^.Imie:=w^.Nast^.Imie;

w^.Kierunek:=w^.Nast^.Kierunek;

w^.Rok:=w^.Nast^.Rok;

w:=w^.Nast;

end;

w^.Nast:=NIL;

end;

w:=w^.Nast;

end;

end;

 

Drugim problemem jest sortowanie listy. Tutaj kompletnie nie mam pojęcia jak to zrobić, ale tym problemem zajmę się później

Gdyby znalazł się ktoś kto byłby w stanie mi pomóc to z góry bardzo dziękuję ;)

 

Edit: Z sortowaniem na szczęście sobie poradziłem. Jak zwykle okazało się że był drobny błąd w kodzie ;) ale z tym usuwaniem bedzie problem nadal ;/

Link do komentarza
Udostępnij na innych stronach

Zarchiwizowany

Ten temat jest archiwizowany i nie można dodawać nowych odpowiedzi.

×
×
  • Utwórz nowe...