Partage
  • Partager sur Facebook
  • Partager sur Twitter

Listes doublement chainées

    21 avril 2006 à 11:02:34

    bonjour,

    Le problème dans ce code c'est que lors d'un test pour voir le contenu il marque null ou 0.


    //_____________________________structure ligne
    struct ligne
    {
            int tab[81];
            struct ligne *suivant;
            struct ligne *precedent;
    };

    struct ligne* Ajoutligne(struct ligne *start, int tab[81])
    {
           
            struct ligne *new_line, *last_line;
            int i=0;

            new_line = (struct ligne *) malloc (sizeof(struct ligne));
           


            while(tab[i] != '/0')
            {       
                    new_line->tab[i] = tab[i];
                    i++;
            }

            new_line->suivant = NULL;

            if (start == NULL)
            {
                    start = new_line;
            }
            else
            {
                    last_line = start;
                   
                    while(last_line->suivant != NULL)
                    {
                            last_line = last_line->suivant;
                    }
                    new_line->precedent = last_line;

                    last_line->suivant = new_line;

            }

           
            return start;
    }


    Le tableau stoque les codes ASCII des caractères, c'est pour cela que c'est un tableau d'entiers
    • Partager sur Facebook
    • Partager sur Twitter
      21 avril 2006 à 11:37:36

      Citation : Black Cat

      Le problème dans ce code


      ... c'est qu'il ne compile pas. Merci de poster un code complet réduit au minimum montrant le défaut.
      • Partager sur Facebook
      • Partager sur Twitter
      Music only !
        21 avril 2006 à 12:08:13

        Pour appeler la fonction, je mets ceci

        Ajoutligne(start, tab);


        En y réfléchissant ma méthode pour vérifier si la liste est bien stockée est totalement fausse, je vous demande donc comment afficher le contenu de ma liste chainée?
        En gros, il s'agit d'afficher les tableaux avec, par exemple, un printf("%s", ...->tab)

        merci
        • Partager sur Facebook
        • Partager sur Twitter
          21 avril 2006 à 12:24:04

          ça c'est pas très compliqué.

          Tu as un pointeur sur le dernier élément de ta liste? Ou est-ce que tu connais sa valeure? Ou est-ce que ta liste se termine par une liste vide?
          Le principe c'est de créer un pointeur qui pointe vers le premier élément.
          Et dans une boucle, tu affiches le contenu de ce pointeur, puis ensuite si ce n'etait pas le dernier élément alors ce pointeur tu le fais pointer sur l'élément suivant, puis ensuite tu réaffiche le contenu du pointeur, jusqu'à arriver à la fin (donc jusqu'à ce que l'élément soit NULL, ou jusqu'à ce qu'il soit égal au pointeur de fin de liste, enfin ça c'est à toi de réfléchir)
          • Partager sur Facebook
          • Partager sur Twitter
            21 avril 2006 à 16:37:20

            Hum, juste une remarque en passant :
            //_____________________________structure ligne
            struct ligne


            Tu es sûr que ce genre de commentaires est vraiment utile ?
            • Partager sur Facebook
            • Partager sur Twitter
              21 avril 2006 à 19:39:50

              Evite de caster le retour d'un malloc.. je sais pas pourquoi exactement, mais surtout ça sert à rien, étant donné que malloc renvoie un *void..
              • Partager sur Facebook
              • Partager sur Twitter
                21 avril 2006 à 19:48:45

                Citation : Gravstein

                Evite de caster le retour d'un malloc.. je sais pas pourquoi exactement...


                http://mapage.noos.fr/emdel/notes.htm#malloc
                • Partager sur Facebook
                • Partager sur Twitter
                Music only !
                  21 avril 2006 à 20:18:12

                  Ah moi je caste tous mes malloc, parce que sinon mon Dev-C++ que soul avec des warning. Quand je caste, c'est bon
                  • Partager sur Facebook
                  • Partager sur Twitter
                    21 avril 2006 à 22:02:29

                    Citation : nonpoluant

                    Ah moi je caste tous mes malloc, parce que sinon mon Dev-C++ que soul avec des warning. Quand je caste, c'est bon


                    C'est parce que tu compiles en C++. Vérifie que l'extension des fihciers source est bien .c et non .cpp ni .C.
                    • Partager sur Facebook
                    • Partager sur Twitter
                    Music only !
                      22 avril 2006 à 1:39:17

                      c'est bien en .c (c minuscule)
                      j'sais pas, ça doit etre Dev-Cpp qui est un peu con
                      • Partager sur Facebook
                      • Partager sur Twitter
                        22 avril 2006 à 1:43:48

                        Citation : nonpoluant

                        c'est bien en .c (c minuscule)
                        j'sais pas, ça doit etre Dev-Cpp qui est un peu con


                        Bah, oui, il fait exactement ce qu'on lui dit de faire... Il faut vérifier la configuration du projet, des fichiers...
                        Au fait, tu as bien inclus <stdlib.h> et compilé avec les options -Wall -Wextra -O2 ?
                        • Partager sur Facebook
                        • Partager sur Twitter
                        Music only !
                          22 avril 2006 à 2:21:53

                          nop, je n'ai pas inclu <stdlib.h>
                          et pour les options j'ai mis comme Matéo a mis dans son tuto, donc à moins m'être endormis à ce moment là, je n'ai pas vu ces otpions. (ou peut êtres sont-elles par defaut, je ne sais pas)
                          • Partager sur Facebook
                          • Partager sur Twitter
                            22 avril 2006 à 3:03:08

                            Citation : nonpoluant

                            nop, je n'ai pas inclu <stdlib.h>


                            Grave erreur. C'est ce qui explique tes warnings. Le compilateur considère que malloc() retourne un int.

                            http://mapage.noos.fr/emdel/notes.htm#malloc

                            Citation : nonpoluant


                            et pour les options j'ai mis comme Matéo a mis dans son tuto, donc à moins m'être endormis à ce moment là, je n'ai pas vu ces otpions. (ou peut êtres sont-elles par defaut, je ne sais pas)


                            Elles ne sont pas par défaut, et je te conseille fortement de les activer.
                            • Partager sur Facebook
                            • Partager sur Twitter
                            Music only !

                            Listes doublement chainées

                            × 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