#include #include #include struct pile1 { unsigned sp; long long tll[1000000]; }; struct pile2 { unsigned sp; unsigned tMax; long long *tll; }; struct enregistrement { long long info; struct enregistrement* inferieur; }; struct pile { struct enregistrement* sp; }; struct pile creerPileVide(void) { struct pile p = { NULL }; return p; } void libererEnregistrement(struct enregistrement* e) { if (e != NULL) { libererEnregistrement(e->inferieur); free(e); e = NULL; } } void viderPile(struct pile *p) { libererEnregistrement(p->sp); } bool etreVide(struct pile p) { return p.sp == NULL; } bool empiler(struct pile* p, long long val) { struct enregistrement* e = (struct enregistrement*) calloc(1, sizeof(struct enregistrement)); if (e == NULL) { return false; } e->info = val; e->inferieur = p->sp; p->sp = e; return true; } bool depiler(struct pile* p, long long* val) { if (p->sp == NULL) { return false; } *val = p->sp->info; struct enregistrement* inf = p->sp->inferieur; free(p->sp); p->sp = inf; return true; } int main(void) { struct pile p = creerPileVide(); printf("Pile creee\n"); for (int i = 0; i <= 100; i += 2) { empiler(&p, i); } while (!etreVide(p)) { long long v; depiler(&p, &v); printf("%lld\n", v); } viderPile(&p); printf("Pile videe\n"); return 0; }