ba5cb103fe951d926a8b9f3bfe921a7466a54d6f
1 /********************************************************************/
2 /* Implantation contiguë d'un type Pile d'entiers */
3 /* On rallonge le tableau par realloc quand il est plein */
4 /********************************************************************/
20 p
.taille_tab
= LONG_PILE
;
21 p
.tab
= (element
*) calloc(p
.taille_tab
, sizeof(element
));
27 return p
.nbre
== 0; /* ou return !p.nbre; */
30 element
sommet(Pile p
)
31 /* ATTENTION: consulter le sommet d'une pile vide n'a pas de sens */
34 printf("Erreur - pile vide\n");
37 return p
.tab
[p
.nbre
- 1];
40 Pile
empiler(element e
, Pile p
)
42 if (p
.nbre
== p
.taille_tab
) {
43 printf("pile pleine %d - on la rallonge!\n", p
.taille_tab
);
45 p
.tab
= realloc(p
.tab
, p
.taille_tab
* sizeof(element
));
52 /* ATTENTION: supprimer le sommet d'une pile vide n'a pas de sens */
55 printf("Erreur - pile vide\n");
62 element
depiler2(Pile
* p
)
63 /* ATTENTION: la pile est modifiée */
65 /* ATTENTION: dépiler une pile vide n'a pas de sens */
67 printf("Erreur - pile vide\n");
70 return p
->tab
[p
->nbre
-- - 1];
73 /********************************************************************/
82 for (i
= 0; i
< 20; i
++)
85 for (i
= 0; i
< 25; i
++)
86 printf("%d\n", depiler2(&p
));
89 /********************************************************************/