1 /*******************************************************************************
2 Implantation contiguë d'un type Pile d'entiers
4 La pile est représentée par une structure:
5 un tableau représente les valeurs
6 un entier représente le nombre d'éléments de la pile
7 *******************************************************************************/
13 typedef struct { int nbre
;
14 element tab
[LONG_PILE
];} Pile
;
22 { return p
.nbre
==0; /* ou return !p.nbre; */
25 element
sommet(Pile p
)
26 /* ATTENTION: consulter le sommet d'une pile vide n'a pas de sens */
27 { if (est_vide(p
)) { printf("Erreur - pile vide\n"); exit(-1); }
28 return p
.tab
[p
.nbre
-1];
30 Pile
empiler(element e
,Pile p
)
31 { if (p
.nbre
==LONG_PILE
) { printf("Erreur - pile pleine\n"); exit(-1); }
37 /* ATTENTION: supprimer le sommet d'une pile vide n'a pas de sens */
38 { if (est_vide(p
)) { printf("Erreur - pile vide\n"); exit(-1); }
43 element
depiler2(Pile
*p
) /* ATTENTION: la pile est modifiée */
44 /* ATTENTION: dépiler une pile vide n'a pas de sens */
45 { if (est_vide(*p
)) { printf("Erreur - pile vide\n"); exit(-1); }
46 return p
->tab
[p
->nbre
-- -1];
48 /******************************************************************************/
57 for (i
=0; i
<20; i
++) p
=empiler(i
,p
);
59 for (i
=0; i
<25; i
++) printf("%d\n",depiler2(&p
));
61 /********************************************************************/