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?