with Ada.Integer_Text_IO, Ada.Text_IO; use Ada.Integer_Text_IO, Ada.Text_IO; procedure Rendezes is type Csúcs; type Mutató is access Csúcs; type Csúcs is record Adat: Integer; Következő: Mutató; end record; procedure Rendez ( Lista: in out Mutató ) is Vége: Mutató := Lista; Tmp, Futó: Mutató; begin if Lista /= null and then Lista.Következő /= null then while Vége.Következő /= null loop if Lista.Adat > Vége.Következő.Adat then Tmp := Vége.Következő; Vége.Következő := Tmp.Következő; Tmp.Következő := Lista; Lista := Tmp; else Futó := Lista; while Futó /= Vége and then Futó.Következő.Adat <= Vége.Következő.Adat loop Futó := Futó.Következő; end loop; if Futó /= Vége then Tmp := Vége.Következő; Vége.Következő := Tmp.Következő; Tmp.Következő := Futó.Következő; Futó.Következő := Tmp; else Vége := Vége.Következő; end if; end if; end loop; end if; end Rendez; procedure Kiír ( Lista: in Mutató ) is P: Mutató := Lista; begin while P /= null loop Put(P.Adat); P := P.Következő; end loop; New_Line; end Kiír; Lista: Mutató := null; begin declare N: Integer; begin loop Get(N); Lista := new Csúcs'(N,Lista); end loop; exception when others => null; end; Kiír(Lista); Rendez(Lista); Kiír(Lista); end Rendezes;