/********************************************************************/
/* Implantation contiguë d'un type Pile d'entiers */
/* On rallonge le tableau par realloc quand il est plein */
-/********************************************************************/
+/********************************************************************/
#include <stdio.h>
#include <stdlib.h>
#define LONG_PILE 5
typedef int element;
-typedef struct { int nbre;
- int taille_tab;
- element *tab; } Pile;
-
+typedef struct {
+ int nbre;
+ int taille_tab;
+ element *tab;
+} Pile;
+
Pile pile_vide(void)
-{Pile p; p.nbre=0; p.taille_tab=LONG_PILE;
- p.tab=(element *)calloc(p.taille_tab, sizeof(element));
- return p;
+{
+ Pile p;
+ p.nbre = 0;
+ p.taille_tab = LONG_PILE;
+ p.tab = (element *) calloc(p.taille_tab, sizeof(element));
+ return p;
}
int est_vide(Pile p)
-{return p.nbre==0; /* ou return !p.nbre; */
+{
+ return p.nbre == 0; /* ou return !p.nbre; */
}
element sommet(Pile p)
/* ATTENTION: consulter le sommet d'une pile vide n'a pas de sens */
-{if (est_vide(p)) { printf("Erreur - pile vide\n"); exit(-1); }
- return p.tab[p.nbre-1];
+{
+ if (est_vide(p)) {
+ printf("Erreur - pile vide\n");
+ exit(-1);
+ }
+ return p.tab[p.nbre - 1];
}
-Pile empiler(element e,Pile p)
-{if (p.nbre==p.taille_tab)
- {printf("pile pleine %d - on la rallonge!\n",p.taille_tab);
- p.taille_tab *=2;
- p.tab=realloc(p.tab, p.taille_tab*sizeof(element));
- }
- p.tab[p.nbre++]=e;
- return p;
+Pile empiler(element e, Pile p)
+{
+ if (p.nbre == p.taille_tab) {
+ printf("pile pleine %d - on la rallonge!\n", p.taille_tab);
+ p.taille_tab *= 2;
+ p.tab = realloc(p.tab, p.taille_tab * sizeof(element));
+ }
+ p.tab[p.nbre++] = e;
+ return p;
}
Pile depiler(Pile p)
/* ATTENTION: supprimer le sommet d'une pile vide n'a pas de sens */
-{if (est_vide(p)) { printf("Erreur - pile vide\n"); exit(-1); }
- p.nbre--;
- return p;
+{
+ if (est_vide(p)) {
+ printf("Erreur - pile vide\n");
+ exit(-1);
+ }
+ p.nbre--;
+ return p;
}
-element depiler2(Pile *p) /* ATTENTION: la pile est modifiée */
-/* ATTENTION: dépiler une pile vide n'a pas de sens */
-{if (est_vide(*p)) { printf("Erreur - pile vide\n"); exit(-1); }
- return p->tab[p->nbre-- -1];
+element depiler2(Pile * p)
+/* ATTENTION: la pile est modifiée */
+{
+ /* ATTENTION: dépiler une pile vide n'a pas de sens */
+ if (est_vide(*p)) {
+ printf("Erreur - pile vide\n");
+ exit(-1);
+ }
+ return p->tab[p->nbre-- - 1];
}
-/********************************************************************/
+
+/********************************************************************/
int main()
-{Pile p;
- int i;
+{
+ Pile p;
+ int i;
- p=pile_vide();
+ p = pile_vide();
- for (i=0; i<20; i++) p=empiler(i,p);
+ for (i = 0; i < 20; i++)
+ p = empiler(i, p);
- for (i=0; i<25; i++) printf("%d\n",depiler2(&p));
+ for (i = 0; i < 25; i++)
+ printf("%d\n", depiler2(&p));
}
-/********************************************************************/
+/********************************************************************/