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.