Láncolt lista - példaprogramok
1.
program Lista1;
uses Crt;
type TMutato = ^TAdatElem;
TAdatElem = record
Adat: integer;
Kovetkezo: TMutato;
end;
var Elso, Aktualis, Uj: TMutato;
a: integer;
begin
ClrScr;
ReadLn(a);
Elso := nil;
while a <> 0 do
begin
New(Uj); {Az Uj mutatóhoz memóriaterület rendelése}
Uj^.Adat := a;
Uj^.Kovetkezo := nil;
if Elso = nil then
Elso:=uj {Első rekord, az Elso mutat az Uj-ra}
else
Aktualis^.Kovetkezo := Uj; {Az Aktualis-hoz csatoljuk az Uj-at}
Aktualis := Uj; {Az Aktualis léptetése}
ReadLn(a)
end;
{A lista megjelenítése}
WriteLn;
Aktualis := Elso;
while Aktualis <> nil do
begin
WriteLn(Aktualis^.Adat);
Aktualis := Aktualis^.Kovetkezo
end;
ReadKey
end.
2.
program Lista2;
uses Crt;
type TMutato = ^TAdatElem;
TAdatElem = record
Adat: integer;
Kovetkezo: TMutato;
end;
var Elso, Aktualis, Uj, Elozo: TMutato;
Szam: integer;
begin
ClrScr;
Elso := nil;
ReadLn(Szam);
while Szam <> 0 do
begin
New(Uj);
Uj^.Adat := Szam;
Uj^.Kovetkezo := nil;
{Az Uj rekord helyének a megkeresése a rendezett listában}
Aktualis := Elso;
while (Aktualis <> nil) and (Aktualis^.Adat < Uj^.Adat) do
begin
Elozo := Aktualis;
Aktualis := Aktualis^.Kovetkezo;
end;
{Az Uj rekord beillesztése a listába}
if Aktualis = Elso then {Az Elso elem lesz}
Elso := Uj
else {Az Elozo mögé, az Aktualis elé}
Elozo^.Kovetkezo := Uj;
Uj^.Kovetkezo := Aktualis;
ReadLn(Szam)
end;
{A lista megjelenítése}
WriteLn;
Aktualis := Elso;
while Aktualis<>nil do
begin
WriteLn(Aktualis^.Adat);
Aktualis := Aktualis^.Kovetkezo;
end;
readkey
end.