Localize file www.TrSek.com/cover/patak/ses_seznam.pas{ SES_SEZNAM.PAS Copyright (c) Pavel Patak }
{ Program vytvori jednostranne zretezeny seznam a seradi jmena }
{ podle abecedy Pro skonceni zadavani dat zadajte ENTER }
{ }
{ Datum:28.10.2004 http://www.trsek.com }
Program SetrideniSeznamu;
type PSeznam = ^TSeznam;
TSeznam = record
Jmeno : string;
Dalsi : PSeznam;
end;
var Prvni,Soucasny : PSeznam;
Seznam : TSeznam;
ZJmeno : string;
Prohozeni: LongInt; {Udava setridenost seznamu}
begin
New(Prvni); {Vytvorime novou dynamickou promennou, na kterou bude ukazovat Prvni}
Soucasny:=Prvni; {Soucasny ukazuje tamtez}
Soucasny^.Dalsi:=nil; {Nic dalsiho zatim neni}
Soucasny^.Jmeno:='nikdo';
{Tim bychom meli hotove jakesi drzadlo}
repeat
Writeln('Jmeno : ');
Readln(ZJmeno);
if ZJmeno <> '' then
begin
New(Soucasny^.Dalsi); {Nova dynamicka promenna}
Soucasny:=Soucasny^.Dalsi; {Ukazatel soucasny presmerujeme na ni}
Soucasny^.Jmeno:=ZJmeno;
Soucasny^.Dalsi:=nil;
end;
until ZJmeno='';
{Setrideni}
repeat
Prohozeni:=0;
Soucasny:=Prvni^.Dalsi;
if Soucasny <> nil then
While Soucasny^.Dalsi<>nil do {Prohodi vsechny prehozene dvojice}
Begin
if Soucasny^.Jmeno > Soucasny^.Dalsi^.Jmeno then
Begin
ZJmeno:=Soucasny^.Jmeno; {Prohrazujeme pouze hodnoty, ne ukazatele!!!}
Soucasny^.Jmeno:=Soucasny^.Dalsi^.Jmeno;
Soucasny^.Dalsi^.Jmeno:=ZJmeno;
Inc(Prohozeni);
End;
Soucasny:=Soucasny^.Dalsi;
End;
until Prohozeni=0; {Opakujeme, dokud se meni poradi prvku}
{Vypis seznamu}
Soucasny:=Prvni^.Dalsi;
While Soucasny<>nil do
Begin
Writeln(Soucasny^.Jmeno);
Soucasny:=Soucasny^.Dalsi;
End;
Readln;
end.