Partage
  • Partager sur Facebook
  • Partager sur Twitter

liste chainée et recursivité

    18 mai 2006 à 14:56:08

    re,
    excusez mon insistance mais je trouve décidément pas ce que je cherche sur le net.
    a tel point que je me demande si c possible (et pourtant il me semble que je l'ai déjà fait mais y'a longtemps)
    voilà mon probleme :

    je cherche a faire une liste chainée qui contiennent des entiers jusqu'à une valeur MAX.
    mais je voudrais le faire avec une fonction récursive qui prend en parametre une liste et un entier; et qui renvoie la liste pointant sur le début.

    ça donnerait ça :

    liste* remplirListe(liste* l, int i)
    {
     nouveau = creer un nouveau maillon;
     while (i<=MAX)
     {
       nouveau->val = i;
       nouveau->suivant=NULL;
       // là y'a surement un truc que j'ai oublié
       // style l->suivant=nouveau; }
       remplirListe(l->suivant, i++);
     }
     retourner le debut de la liste remplit 
    }


    normalement les appels successifs s'empilent jusqu'a ce que i atteigne MAX. puis la boucle s'arrete et ça se désempile pour obtenir au final ma liste qui pointe sur la tete.

    (je c pas si c tres clair mais vraiment je me rappelle plus comment procéder)
    • Partager sur Facebook
    • Partager sur Twitter
    Anonyme
      18 mai 2006 à 17:12:20

      Pourquoi pas quelque chose du style


      lst * creer_list(lst *p, int i)
      {
              p = malloc(sizeof(lst));
              p->val = i;
              if(i > MAX)
              {
                      p->next = NULL;
                      return p;
              }              
              p->next = creer_list(p->next,i+1);

              return p;
      }
      • Partager sur Facebook
      • Partager sur Twitter
        19 mai 2006 à 16:46:18

        yop merci ! :)

        grâce à toi j'ai pu retrouver comment faire ce que je voulais.
        je met le code pour info :





        int main()
        {
         nombres = initialiserListe(nombres,2);
         printf("ici on affiche la liste :");
         afficherListe(nombres);
        }

        liste* creerMaillon(int i)
        {
         liste *maillon = (liste*)malloc(sizeof(liste));
         maillon->n=i;
         maillon->suivant=NULL;
         return maillon;
        }

        liste* initialiserListe(liste *l,int i)
        {
         liste *nouveau = creerMaillon(i);

         if(i<MAX)
         {
            l=nouveau;
            l->suivant=initialiserListe(nouveau->suivant,i+1);
         }
        return l;
        }

        void afficherListe(liste* l)
        {
         while(l)
         {
            printf("%i->",l->n);
            l=l->suivant;
         }
        }


        • Partager sur Facebook
        • Partager sur Twitter

        liste chainée et recursivité

        × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
        × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
        • Editeur
        • Markdown