Partage
  • Partager sur Facebook
  • Partager sur Twitter

Liste chainee

    15 décembre 2007 à 15:32:44

    Bonjour !
    Je tente de piger comment fonctione une liste chainee.
    Pour ce faire, j'ai fais le code suivant :
    MAIN.CPP :
    1. int main()
    2. {
    3.     cout << "DEBUT " << endl << endl;
    4.     JbListe Liste1(jTETE_DE_LISTE); //jTETE_DE_LISTE est une valeur qui correspond au premier élément
    5.     Liste1.Add_Element(34);
    6.     return 0;
    7. }


    JBLISTE.H :
    1. #define jTETE_DE_LISTE 304384
    2. class JbListe
    3. {
    4.        public :
    5.        JbListe();
    6.        JbListe(long valeur);
    7.        void Add_Element(long valeur);
    8.        void Set_Valeur(long valeur);
    9.        void Set_Suivant(JbListe suivant);
    10.        protected :
    11.        long m_valeur;
    12.        JbListe *m_Element_suivant;
    13. };


    Et enfin, JBLISTE.CPP (en verison simplifiée au niveau des constructeurs ):
    1. JbListe::JbListe (long valeur)
    2. {
    3.        m_valeur = valeur;
    4.        m_Element_suivant = NULL;
    5. }
    6. void JbListe::Add_Element(long valeur)
    7. {
    8.        JbListe * nouveau = new JbListe(valeur);
    9.        nouveau->Set_Suivant(*m_Element_suivant);
    10.        m_Element_suivant = nouveau;
    11. }
    12. void JbListe::Set_Valeur(long valeur)
    13. {
    14.        m_valeur = valeur;
    15. }
    16. void JbListe::Set_Suivant(JbListe * suivant)
    17. {
    18.        m_Element_suivant = suivant;
    19. }


    Le principal problème que je rencontre est un problème de pointeurs. En effet, mon compilateur me dit toujours que je ne peut passer de liste** à int liste, ou que des messages de ce type.


    Pourriez-vous m'aider ? Je commence à méchamment m'embrouiller là... :colere2:
    Merci !

    <Edit orthographe>
    • Partager sur Facebook
    • Partager sur Twitter
      17 décembre 2007 à 11:35:33

      salut,

      Alors je note les erreurs que je vois:
      - la méthode Set_Suivant n'a pas la même définition dans le .h et dans le .cpp oO
      - set_suivant attend (logiquement) un pointeur, or dans add_element tu passes la valeur. a mon sens donc pas d'étoile.
      - dans add_element toujours ... completement incohérent celle-là ... tu utilises ta méthode set_suivant en passant une valeur et non le pointeur (cf ci-dessus), puis tu passes outre ta méthode pour affecter correctement le suivant
      - ce n'est pas une erreur, juste une futilité ... à quoi sert cette constante jTete_liste (étant donné que pour une liste chainée, on pointe toujours sur la tête)

      je te conseille donc de revoir intégralement ton set_suivant et ton add_element ;)

      Note enfin que si ton but est de comprendre les listes chainées, je te conseille vivement de le faire en C, avec une structure du type:

      1. struct cellule{
      2.   int valeur;
      3.   struct cellule *suivant;
      4. };


      Voilà bon courrage
      • Partager sur Facebook
      • Partager sur Twitter

      Liste chainee

      × 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