[C++] Problème de liste

Résolu/Fermé
Akasha2509 Messages postés 3 Date d'inscription jeudi 18 juin 2009 Statut Membre Dernière intervention 19 juin 2009 - 19 juin 2009 à 11:20
mamiemando Messages postés 33361 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 15 novembre 2024 - 20 juin 2009 à 01:48
Bonjour,

J'ai un bout de code qui bug :

list<SOMMET*>::iterator p, q;
for(p = LAllSommets.begin(); p != LAllSommets.end(); p++)
{
cout << "liste des voisins de "<< (*p)->nom<<" : ";
for(q = (*p)->LVoisins.begin(); q != (*p)->LVoisins.end(); q++)
{
cout << (*q)->nom << " ";
}
cout << endl;
}

J'explique : LAllSommets est une liste de pointeurs vers des sommets qui ont comme attribut un nom et une liste de pointeurs vers des sommets voisins : LVoisins. (qu isont des sommets)

la première boucle me renvoie bien la liste de tous mes sommets par contre la deuxième s'arête au deuxième sommet. (le premier sommet (a) n'a qu'un voisin alors que b en a deux ! c'est la seule différence)

Pourriez vous m'éclairé vers ou chercher pour résoudre ce bug... Je patauge.

Merci
Akasha

5 réponses

mamiemando Messages postés 33361 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 15 novembre 2024 7 799
19 juin 2009 à 13:28
Visiblement c'est ta structure qui est mal remplie... Ton extrait de code est un peu restreint pour qu'on puisse t'aider.

Bonne chance
0
Akasha2509 Messages postés 3 Date d'inscription jeudi 18 juin 2009 Statut Membre Dernière intervention 19 juin 2009
19 juin 2009 à 13:34
Je ne voulais pas trop mettre de code pour pas trop embrouillé :p

Le passage ou je rempli ma liste de voisin est :


//le sommet voisin de s dans le polygone courant
SOMMET sVoisin = *LSommets.back();

s.LVoisins.push_front(&sVoisin);


Avec LSommets la liste des pointeurs vers des sommets qui composent le polygone courant.

En tout cas merci pour la réponse ^^
0
mamiemando Messages postés 33361 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 15 novembre 2024 7 799
19 juin 2009 à 13:40
Ha oui effectivement je connais bien cheucheu :-) On aura sans doute l'occasion de jouer prochainement ensemble j'imagine.

Pour revenir à ton problème, je pense que le soucis est algorithmique. La fonction d'affichage me parait correcte. Je pense que tu remplis mal ta structure, tu devrais te mettre des messages de debug au moment ou tu remplis tes listes.

En ce qui me concerne je peux difficilement t'aider si tu ne me fournis pas un code minimal qui compile...

Bon sinon, tes notations en terme de code sont pas merveilleuses entre les types tantôt en majuscules tantôt pas. Mais bon c'est du détail.

De même dans ta fonction d'affichage (qui ne modifie pas les listes) tu es sensé utiliser des const_iterator (ou const_reverse_iterator) au lieu des iterator (/ reverse_iterator).
http://www.commentcamarche.net/faq/sujet 11255 introduction a la stl en c standard template library#les iterators

Bonne chance
0
Akasha2509 Messages postés 3 Date d'inscription jeudi 18 juin 2009 Statut Membre Dernière intervention 19 juin 2009
19 juin 2009 à 14:19
Tu avais raison, le problème venait de mon remplissage de liste.

Il fallait que je mette : s.LVoisins.push_back(LSommets.back());

Merci pour le coup de main.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
mamiemando Messages postés 33361 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 15 novembre 2024 7 799
20 juin 2009 à 01:48
De rien, bonne continuation !
0