Sortowanie listy jednokierunkowej

0

Witam,

napisałby ktoś kod, który posortowałby elementy listy jednokierunkowej od najmniejszej wartości key do największej. Elementy listy to:

 Pelement = ^data;

 data=record
    Next:Pelement;
    key:integer;
    end;

Dodam jedynie, że lista jest już wczytana, sortowanie wbijam pod button, pierwszy i ostatni element to odpowiednio root i last. proszę o pomoc.

0

Dzięki wielkie za pomoc, jesteś moim wybawcą, gdyby nie ta wskazówka do niczego bym nie doszedł, ocaliłeś moje życie jak i całą ludzkość... jesteś bohaterem <brawo>

0

Opiszę inaczej mój problem. Mam wczytaną listę jednokierunkową nieuporządkowaną. Jej pierwszy element to root. Chcę ją przerzucić na inną listę ale uporządkowaną względem wiek. Pierwszy element nowej listy to first. program mi się zawiesza. W czym problem... Oto kod procedury:

procedure TForm1.Button8Click(Sender: TObject);
var first:Pelement;
    ost:Pelement;
begin
count:=root^.next;
first:=Root;
ost:=first;
ost^.Next:=nil;
first^.next:=ost;


while count<>nil do
begin
edit:=first;

if count^.wiek<ost^.wiek then
begin
while (edit^.next^.wiek<count^.wiek)and(edit^.Next<>nil) do edit:=edit^.next;
pref:=count;
pref.Next:=edit^.next;
edit^.Next:=pref;
end;
count:=count^.next

end;
root:=first;
count:=root;
memo1.Clear;
while count<>nil do
begin
if count^.lp<10 then
memo1.lines.Add(inttostr(count^.lp)+'            '+inttostr(count^.wiek)+'           '+count^.popiera);
if count^.lp>9 then memo1.lines.Add(inttostr(count^.lp)+'           '+inttostr(count^.wiek)+'           '+count^.popiera);
count:=count^.next;
end;
end; 
0

Wskaźnik

 Pelement:=^data;
data=record
    Next:Pelement;
    lp:integer;
    popiera:string[3];
0

W rekordzie data jest jeszcze zmienna wiek:integer; Wie ktoś co jest nie tak?

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