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/=nulland 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