/* Creation de liste chainée circulaire avec n cellules */ #include #include #include typedef struct cell cell; struct cell { int n; struct cell * s; struct cell * p; }; cell * creerliste(int x) { int i; cell * debut; cell * oldcell; cell * newcell; debut = malloc(sizeof (cell)); assert(debut); printf("%d ", debut->n = 1); debut->s = debut; debut->p = debut; oldcell = debut; for(i = 2; i <= x; i++) { newcell = malloc(sizeof *newcell); assert(newcell); printf("%d ", newcell->n = i); newcell->s = debut; newcell->p = oldcell; oldcell->s = newcell; debut->p = newcell; oldcell = newcell; } putchar('\n'); return debut; } void liberer(cell * debut) { cell * avant = debut; cell * adetruire = avant->s; cell * apres = adetruire->s; while(adetruire != avant) { avant->s = apres; apres->p = avant; printf("liberer %d ",avant->n); adetruire->s = NULL; adetruire->p = NULL; avant = apres; adetruire = avant->s; apres = adetruire->s; } putchar('\n'); } int main() { cell * liste = creerliste(10); liberer(liste); if(liste != NULL) { } else { return EXIT_FAILURE; } return 0; }