// Header File // Created 26/09/2004; 12:11:37 #define NBCASES 257 struct _pile { unsigned char tab[NBCASES]; int nbElems; }; typedef struct _pile Pile; extern Pile *newPile(void); extern void initPile(Pile *p); extern void deletePile(Pile *p); extern void viderPile(Pile *p); extern void afficherPile(const Pile *p); extern int sommetPile(const Pile *p); extern int nbElemsPile(const Pile *p); extern int estVidePile(const Pile *p); extern int estPleinePile(const Pile *p); extern void empilerPile(Pile *p, int elem); extern void depilerPile(Pile *p, int *val); extern Pile *newPile(void) { Pile *p=(Pile*)malloc(sizeof(Pile)); assert(p!=NULL); initPile(p); return p; } extern void initPile(Pile *p) { assert(p!=NULL); p->nbElems=0; } extern void deletePile(Pile *p) { assert(p!=NULL); free(p); } extern void viderPile(Pile *p) { assert(p!=NULL); p->nbElems=0; } extern void afficherPile(const Pile *p) { int i=0; assert(p!=NULL); if(estVidePile(p)) printf("()\n"); else { printf("\n("); for(i=p->nbElems-1;i>0;i--) { printf("%d,",(p->tab)[i]); } printf("%d)",p->tab[0]); } } extern int sommetPile(const Pile *p) { assert(p!=NULL); return (p->tab)[p->nbElems-1]; } extern int nbElemsPile(const Pile *p) { assert(p!=NULL); return p->nbElems; } extern int estVidePile(const Pile *p) { assert(p!=NULL); if(p->nbElems==0) return 1; return 0; } extern int estPleinePile(const Pile *p) { assert(p!=NULL); if(p->nbElems==NBCASES) return 1; return 0; } extern void empilerPile(Pile *p, int elem) { assert(p!=NULL); if(!estPleinePile(p)) { (p->tab)[p->nbElems]=elem; p->nbElems++; } } extern void depilerPile(Pile *p,int *val) { assert(p!=NULL); if(!estVidePile(p)) { p->nbElems--; *val=p->tab[p->nbElems]; } }