with Ada.Unchecked_Deallocation; package body Vermek is procedure Felszabadít is new Ada.Unchecked_Deallocation(Csúcs, Mutató); procedure Push( V: in out Verem; E: in Elem ) is begin V.Veremtető := new Csúcs'(E,V.Veremtető); V.Méret := V.Méret + 1; end; procedure Pop( V: in out Verem; E: out Elem ) is Régi: Mutató := V.Veremtető; begin E := Top(V); V.Veremtető := V.Veremtető.Következő; V.Méret := V.Méret - 1; Felszabadít(Régi); end; function Top( V: Verem ) return Elem is begin return V.Veremtető.Adat; exception when Constraint_Error => raise Üres_A_Verem; end; function Is_Empty( V: Verem ) return Boolean is begin return V.Veremtető = null; end; function Is_Full( V: Verem ) return Boolean is begin return false; end; function Size( V: Verem ) return Natural is begin return V.Méret; end; procedure Finalize ( V: in out Verem ) is P: Mutató; begin while V.Veremtető /= null loop P := V.Veremtető; V.Veremtető := V.Veremtető.Következő; Felszabadít(P); end loop; end Finalize; end Vermek;