50 lines
1.6 KiB
Ada
50 lines
1.6 KiB
Ada
-- Avril 2014
|
|
-- Auteurs : MJ. Huguet - R. Guillerm
|
|
--
|
|
-- Mise à jour : avril 2015
|
|
-- Auteur : MJ. Huguet
|
|
-- Modif : ajout de la cle des elements
|
|
--
|
|
-- OBJET : paquetage generique de Tas
|
|
------------------------------------------------------------------------
|
|
generic
|
|
type Element is private;
|
|
-- type des noms des éléments
|
|
type Key is private;
|
|
-- type de la cle des elements
|
|
with function Cle_De(E : in Element) return Key;
|
|
with function "<"(C1, C2 : in Key) return Boolean;
|
|
-- fonction de comparaison de deux valeurs
|
|
with procedure Liberer_Element(E : in out Element);
|
|
with function Element_To_STring(E : in Element) return string;
|
|
package Tas_Gen is
|
|
|
|
Tas_Vide, Tas_Plein : exception;
|
|
|
|
type Un_Tas(Dimension : Natural) is limited private;
|
|
|
|
-- Vider le tas
|
|
procedure Liberer(T : in out Un_Tas);
|
|
|
|
-- Retourne le nb courant d'éléments du tas
|
|
function Cardinal(T : in Un_Tas) return Natural;
|
|
|
|
-- Retirer la racine du tas et la retourne
|
|
procedure Enlever_Racine(T : in out Un_Tas; E : out Element);
|
|
|
|
-- Ajouter un nouvel élément dans le tas
|
|
procedure Ajouter(E : in Element; T : in out Un_Tas);
|
|
|
|
function Tas_To_String(T : in Un_Tas) return string;
|
|
|
|
private
|
|
|
|
type Tab_Elements is array(natural range <>) of Element;
|
|
-- les éléments sont dans un tableau
|
|
|
|
type Un_Tas(Dimension : Natural) is record -- le record Tas mémorise :
|
|
Cardinal : Natural := 0; -- - le nombre d'éléments du tas
|
|
Les_Elements : Tab_Elements(1..Dimension); -- - le tableau des éléments du tas
|
|
end record;
|
|
|
|
end Tas_Gen;
|