TP5 exo4: Implement iterative linked list freeing
authorJérôme Benoit <jerome.benoit@piment-noir.org>
Thu, 9 Mar 2017 18:27:09 +0000 (19:27 +0100)
committerJérôme Benoit <jerome.benoit@piment-noir.org>
Thu, 9 Mar 2017 18:27:09 +0000 (19:27 +0100)
Signed-off-by: Jérôme Benoit <jerome.benoit@piment-noir.org>
TP3/macros.h
TP5/exo4/liste_chainee.c

index e8593188b842c267535193969d9528bc86dfd20c..a0ccdd24ae06511e2c0fd85a11f26fa56b701e5d 100644 (file)
@@ -4,6 +4,6 @@
 /* definition to expand macro then apply to pragma message */
 #define VALUE_TO_STRING(x) #x
 #define VALUE(x) VALUE_TO_STRING(x)
-#define VAR_NAME_VALUE(var) #var "="  VALUE(var)
+#define VAR_NAME_VALUE(var) #var "=" VALUE(var)
 
 #endif /* MACROS_H */
index add8b224f8d3bab04fc1d614ba66680c3ce53a9d..d8ae698a48a8140a3a69afd1ecdc5589fd72bcbf 100644 (file)
@@ -142,12 +142,12 @@ Liste supprimer_iter(element e, Liste L)
                        free(L);
                        pavant->suivant = NULL;
                        return pdebut;
-                       /* supprimer au début de la liste */
+               /* supprimer au début de la liste */
                } else if (L->valeur == e && pavant == NULL) {
                        Cellule *pcourant = L;
                        free(L);
                        return pcourant->suivant;
-                       /* supprimer au mileu de la liste */
+               /* supprimer au mileu de la liste */
                } else if (L->valeur == e) {
                        Cellule *pcourant = L;
                        free(L);
@@ -177,7 +177,11 @@ Liste inverser_rec(Liste L)
 
 void liberer_iter(Liste L)
 {
-
+       while (!L) {
+               Cellule *pcourant = L;
+               free(L);
+               L = pcourant->suivant;
+       }
 }
 
 void liberer_rec(Liste L)
@@ -219,7 +223,8 @@ int main()
        L = supprimer_iter(2, L);
        visualiser_rec(L);
        visualiser_iter(L);
-       liberer_rec(L);
+       //liberer_rec(L);
+       liberer_iter(L);
        /* ... */
 }