Bonjour !
Je tente de piger comment fonctione une liste chainee.
Pour ce faire, j'ai fais le code suivant :
MAIN.CPP :
int main()
{
cout << "DEBUT " << endl << endl;
JbListe Liste1(jTETE_DE_LISTE); //jTETE_DE_LISTE est une valeur qui correspond au premier élément
Liste1.Add_Element(34);
return0;
}
JBLISTE.H :
#define jTETE_DE_LISTE 304384
class JbListe
{
public :
JbListe();
JbListe(long valeur);
void Add_Element(long valeur);
void Set_Valeur(long valeur);
void Set_Suivant(JbListe suivant);
protected :
long m_valeur;
JbListe *m_Element_suivant;
};
Et enfin, JBLISTE.CPP (en verison simplifiée au niveau des constructeurs ):
JbListe::JbListe(long valeur)
{
m_valeur = valeur;
m_Element_suivant = NULL;
}
void JbListe::Add_Element(long valeur)
{
JbListe * nouveau = new JbListe(valeur);
nouveau->Set_Suivant(*m_Element_suivant);
m_Element_suivant = nouveau;
}
void JbListe::Set_Valeur(long valeur)
{
m_valeur = valeur;
}
void JbListe::Set_Suivant(JbListe * suivant)
{
m_Element_suivant = suivant;
}
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à...
Merci !
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:
struct cellule{
int valeur;
struct cellule *suivant;
};
Voilà bon courrage
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.