cours_ada/semestre4/TP1_piles/piles_entiers.ads
2021-08-22 13:24:45 +02:00

63 lines
2 KiB
Ada

-- Auteurs : P. E.
-- Version du 30/01/2019
package Piles_Entiers is
type Pile is limited private;
Pile_Vide : exception;
-- exception levee si on tente d'acceder au sommet d'une pile vide
-- ou si on tente de depiler une pile vide.
-- ****************************************
-- OPERATIONS INDISPENSABLES DU T.A.D. PILE
-- ****************************************
procedure Init(P : in out Pile);
-- Ne fait rien si P est deja vide a l'appel
-- Sinon efface tous les elements de P (en
-- recuperant la memoire allouee)
-- et retourne la pile vide
function Est_Vide(P : in Pile) return Boolean;
-- Retourne vrai si la pile est vide, faux sinon
function Sommet(P : in Pile) return Integer;
-- Retourne le premier element de P (situe au sommet)
procedure Empiler(E : in Integer; P : in out Pile);
-- Empile E au dessus de P ; E devient le nouveau sommet
procedure Depiler(P: in out Pile);
-- Efface le sommet de P ; attention, penser a recuperer
-- la memoire associee a la cellule a effacer
-- **************************************
-- OPERATIONS FACULTATIVES DU T.A.D. PILE
-- **************************************
function Hauteur(P : in Pile) return Natural;
-- Calculer la hauteur en comptant le nombre d'elements depilables
-- n'est pas efficace. Cette fonction accede directement au champ
-- hauteur du record associe a une pile
function To_String(P : in Pile) return String;
-- Convertit une pile d'entiers en une chaine de caracteres
function "="(P1,P2 : in Pile) return boolean;
-- Verifie que les piles sont identiques (memes elements et meme ordre)
private
type Cellule;
type Liste is access Cellule;
type Cellule is record
Info : Integer;
Suiv : Liste;
end record;
type Pile is record
Debut : Liste := null;
Hauteur: Natural := 0;
end record;
end Piles_Entiers;