X-Git-Url: https://git.piment-noir.org/?a=blobdiff_plain;f=TP5%2Fexo2%2Fpile_realloc.c;h=cef3e173884bc54a3442972570fcd9490446c569;hb=1960d1adb5b93ad8a7c0140af450790c572280df;hp=a41cdb74426521572d69b80b245a9896ca1835b8;hpb=16d1d589590215264ffec1c7af6fee2af81fb351;p=Algorithmic_C.git diff --git a/TP5/exo2/pile_realloc.c b/TP5/exo2/pile_realloc.c index a41cdb7..cef3e17 100644 --- a/TP5/exo2/pile_realloc.c +++ b/TP5/exo2/pile_realloc.c @@ -1,65 +1,87 @@ /********************************************************************/ /* Implantation contiguë d'un type Pile d'entiers */ /* On rallonge le tableau par realloc quand il est plein */ -/********************************************************************/ +/********************************************************************/ #include #include #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)); } -/********************************************************************/ +/********************************************************************/