#include #include "memoire.h" #include "pile.h" #define TAILLE_PILE 10 static void pile_ajuste(pile p); pile pile_creer(void) { pile p = memoire_allouer(sizeof(struct pile)); p->sommet = -1; p->capacite = TAILLE_PILE; p->pile = memoire_allouer(TAILLE_PILE * sizeof(int)); return p; } int pile_vide(pile p) { return p->sommet == -1; } void pile_empile(pile p, int valeur) { pile_ajuste(p); p->pile[++p->sommet] = valeur; } int pile_depile(pile p) { int valeur = pile_valeur(p); p->sommet--; return valeur; } int pile_valeur(pile p) { assert(! pile_vide(p)); return p->pile[p->sommet]; } int pile_taille(pile p) { return p->sommet + 1; } void pile_detruire(pile p) { memoire_liberer(p->pile); memoire_liberer(p); } static void pile_ajuste(struct pile *p) { if (p->sommet == p->capacite - 1) { p->capacite *= 2; p->pile = memoire_reallouer(p->pile, p->capacite * sizeof(int)); } }