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.