#include #include struct element_liste { int valeur; struct element_liste *suivant; }; /* Retourne une liste simplement liée contenant des valeurs lues au clavier, par ordre inverse de lecture. En cas d'erreur, interrompt l'exécution du programme. */ static struct element_liste *creer_liste(void) { struct element_liste *liste, *nouvel_element; int valeur; for (liste = NULL;;) { printf("Entrez une valeur positive (ou négative pour terminer): "); if (scanf("%d", &valeur) != 1 || valeur < 0) return liste; nouvel_element = malloc(sizeof(struct element_liste)); if (!nouvel_element) exit(-1); nouvel_element -> valeur = valeur; nouvel_element -> suivant = liste; liste = nouvel_element; } } /* Affiche à l'écran les valeurs contenues dans la liste simplement liée , dans l'ordre, et libère cette liste. */ static void afficher_et_liberer_liste(struct element_liste *l) { struct element_liste *e, *e_suivant; for (e = l; e; e = e_suivant) { printf(" %d", e -> valeur); e_suivant = e -> suivant; free(e); } } int main() { struct element_liste *liste; liste = creer_liste(); printf("Liste retournée:"); afficher_et_liberer_liste(liste); printf("\n"); return 0; }