Witam wszystkich:)
Musze napisać program obsługujący książkę adresową oparty na liscie jednokierunkowej. Większość funkcjonalnosci mam juz napisane, jednak w programie musi być opcja sortowania wedlug numeru lub wedlog nazwiska.
Oto deklaracja listy:
type
PElement = ^TElement;
TElement = record
Next: PElement;
n_ind: integer;
Imie: String;
Nazwisko: String;
Numer:String;
Ulica: String;
Ndomu:String;
Miasto:String;
end;
A to procedura sortująca, napisana na podstawie procedury znalezionej na forum:
procedure TForm1.SortujNazw(q:PElement);
var
tmp, tmp2 : PElement;
begin
if q <> nil then
begin
tmp := q^.Next;
while (tmp <> nil) do
begin
if (q^.Nazwisko > tmp^.Nazwisko) then
begin
tmp2^.Next:= tmp^.Next;
tmp^.Next := q^.Next;
q^.Next := tmp2^.Next;
end;
tmp := tmp^.Next;
end;
SortujNazw(q^.Next);
end;
end;
Procedura sie wykonuje, nie wpada w petle nieskończoną, jednak nie dokonuje żadnych zmian w liscie.Moje bytanie brzmi w którym miejscu jest błąd i jak go poprawic?