diff --git a/src/liste.c b/src/liste.c index 4798532..6bdb28c 100644 --- a/src/liste.c +++ b/src/liste.c @@ -7,6 +7,15 @@ struct liste { }; typedef struct liste liste_t; +void free_liste(liste_t* liste) { + liste_t* cur = liste; + while(cur != NULL) { + liste_t* prev = cur; + cur = cur->suivant; + free(prev); + } +} + // Alloue une nouvelle cellule de // valeur `val` liste_t* alloc_cell(int val) { @@ -26,9 +35,15 @@ void afficher_liste(liste_t* liste, int taille) { } } int main(int argc, char** argv) { + if(argc < 2) { + fprintf(stderr, "Missing argument: number of elements to print\n"); + exit(1); + } int n = atoi(argv[1]); // premier argument liste_t* tete = alloc_cell(1); tete->suivant = alloc_cell(2); afficher_liste(tete, n); + + free_liste(tete); return 0; }