TP5: Implement linked list counting iteratively and recursively
authorJérôme Benoit <jerome.benoit@piment-noir.org>
Tue, 7 Mar 2017 09:58:29 +0000 (10:58 +0100)
committerJérôme Benoit <jerome.benoit@piment-noir.org>
Tue, 7 Mar 2017 09:58:29 +0000 (10:58 +0100)
Signed-off-by: Jérôme Benoit <jerome.benoit@piment-noir.org>
TP5/exo4/liste_chainee.c

index 7d550819392e5824b797f24f78b988e38c912710..4b93fc23d49a9b6d0bdae8eb345d3ad05360c86f 100644 (file)
@@ -42,8 +42,7 @@ int longueur_iter(Liste L)
 {
        int longueur = 0;
 
-       while (L->suivant != NULL)
-       {
+       while (L != NULL) {
                L = L->suivant;
                longueur++;
        }
@@ -52,7 +51,11 @@ int longueur_iter(Liste L)
 
 int longueur_rec(Liste L)
 {
-       /* ... */
+       if (L != NULL) {
+               return 1 + longueur_rec(L->suivant);
+       } else {
+               return 0;
+       }
 }
 
 void visualiser_iter(Liste L)
@@ -105,9 +108,13 @@ int main()
 {
        int x;
        Liste L = NULL;
+       L = ajouter_iter(2, L);
+       L = ajouter_iter(1, L);
+       L = ajouter_iter(3, L);
+       printf("Saisir un entier a ajouter a la site\n");
        scanf("%d", &x);
        L = ajouter_iter(x, L);
-       printf("longueur=%d\n", longueur_iter(L));
+       printf("longueur=%d\n", longueur_rec(L));
        visualiser_iter(L);
        /* ... */
 }