sortowanie listy jednokierunkowej

0

Mam listę jednokierunkową i chcę ją posortować według jednego elementu. Wykorzystując algorytm sortowania bąbelkowego mam taki fragment kodu:

aktualny:=pierwszy2^.nast2;
poprzedni:=pierwszy2;

if StrToFloat(aktualny^.secplik)>StrToFloat(poprzedni^.secplik) then
begin
if poprzedni=pierwszy2 then
  begin
   tymczasowy:=aktualny;
   aktualny:=pierwszy2;
   pierwszy2:=tymczasowy;
  end
else
  begin
   tymczasowy:=aktualny;
   aktualny:=poprzedni;
   poprzedni:=tymczasowy;
  end;
end;

Na razie nie ma żadnej pętli bo sprawdzam działanie dla pierwszych dwóch elementów. I pojawia się taki problem, że podczas wyświetlania listy widzę pierwszy element (który kiedyś był drugim) i element trzeci.

Wiem, że to dlatego, iż pierwszy element odwołuje się do trzeciego, ale kiedy próbuję zmienić odwołania elementów do ich następników wychodzi jakiś bajzel i program działa bez końca.
Jak zmienić odwołania do kolejnych elementów w czasie ich zamiany?

0

Ja myślę że powinieneś zamieniać wskaźniki nast2, a nie kopiować całe węzły. Przecież po to masz te wskaźniki.

1 użytkowników online, w tym zalogowanych: 0, gości: 1