A következő program egy láncolt kétirányú rendezett láncolt listát valósít meg.
A lista elemei pozitív egész számok.
Addig olvasunk a billentyűzetről, amíg pozitív számot ad a felhasználó.
VISSZA
with ada.text_io; use ada.text_io;
procedure main is
--egy eljaras ami beolvas egy szamot
procedure BE(msg : in string; data : out integer) is
h : integer;
s : string(1..12);
begin
put_line(msg);
get_line(s,h);
data := integer'value(s(1..h));
end BE;
--letrehozzuk a lista adatszerkezetet
type listaelem;
type plist is access listaelem;
type listaelem is record
e : integer;
prev, next : plist;
end record;
L : plist := null;
u,v,p : plist;
i : integer;
begin
BE("Kerek egy szamot",i);
while i > 0 loop
p := new listaelem;
p.e := i;
--ha a lista meg ures, akkor L-t raallitjuk az uj elemre
if L = null then
p.prev := null;
p.next := null;
L := p;
else
--ha nem ures, akkor megkeressuk az elem helyet a listaban
u := null;
v := L;
while (v/=null) and then (i > v.e) loop
u := v;
v := v.next;
end loop;
--ha u = null, akkor a beszurando elem a legkisebb
if u = null then
L := p;
p.next := v;
p.prev := null;
v.prev := p;
else
u.next := p;
p.next := v;
p.prev := u;
if v /= null then
v.prev := p;
end if;
end if;
end if;
BE("Kerek egy szamot",i);
end loop;
--Az eredmenyek kiirasa
p := L;
while p /= null loop
put(integer'image(p.e) & "; ");
p := p.next;
end loop;
end main;
VISSZA