Witam! Mam problem związany z sortowaniem bąbelkowym. Tworze listę jednokierunkową procedurą:
TYPE
TWsk = ^TZadanie;
TZadanie = RECORD
numer : byte;
tresc : string[128];
priorytet : byte;
nastepne : TWsk;
end;
VAR
menu,nr : integer;
poczatek,
koniec,
pierwsze,
zadanie : TWsk;
Dodawanie elementów:
PROCEDURE Dodaj();
begin
IF poczatek=NIL THEN
begin
New(pierwsze);
Inc(nr);
pierwsze^.numer:=nr;
writeln('Podaj nowe zadanie: ');
readln(pierwsze^.tresc);
pierwsze^.priorytet:=0;
pierwsze^.nastepne:=NIL;
poczatek:=pierwsze;
koniec:=pierwsze;
end
ELSE
begin
New(zadanie);
Inc(nr);
zadanie^.numer:=nr;
writeln('Podaj nowe zadanie: ');
readln(zadanie^.tresc);
zadanie^.priorytet:=0;
koniec^.nastepne:=zadanie;
zadanie^.nastepne:=NIL;
koniec:=zadanie;
end;
end;
Użytkownik ma w programie możliwość zmiany priorytetów jakiegoś zadania i wtedy lista musi zostać posortowana malejąco według priorytetów.
Moja procedura:
PROCEDURE Sortuj();
var
element:TWsk;
temp:TWsk;
begin
pierwsze:=poczatek;
WHILE pierwsze^.nastepne<>NIL DO
element:=pierwsze;
begin
WHILE element^.nastepne<>NIL DO
begin
IF element^.priorytet<element^.nastepne^.priorytet THEN
begin
temp^.tresc:=element^.tresc;
temp^.priorytet:=element^.priorytet;
temp^.nastepne:=element^.nastepne^.nastepne;
element^.nastepne^.nastepne:=temp;
end;
element:=element^.nastepne;
end;
pierwsze:=pierwsze^.nastepne;
end;
writeln('Lista posortowana wedlug priorytetow zadan');
delay(500);
end;
Niestety to pętla nieskończona (nie wychodzi z pętli zagnieżdżonej) i nie wiem dlaczego ani jak to poprawić. Możecie pomóc?