Liste chainée de pointeurs

floralastar03
Messages postés
4
Date d'inscription
jeudi 15 juin 2006
Statut
Membre
Dernière intervention
16 juin 2006
- 15 juin 2006 à 17:17
cs_JCDjcd
Messages postés
1138
Date d'inscription
mardi 10 juin 2003
Statut
Membre
Dernière intervention
25 janvier 2009
- 15 juin 2006 à 20:34
Bonjour

C'EST SUPER URGENT SVP

Je travaille sur un programme qui met en oeuvre des classes
d'objets avec des classes héritées et j'ai voulu intégrer des listes
chainées de pointeurs sur ces objets.

Ma liste se crée bien
mais quand je veux l'afficher, bug. Je possède 3 listes pour 3 classes
différentes ; et quand je souhaite afficher juste 1 liste, les 3 se
mélangent.

Voici le code de ma procédure Afficher :
void AfficherM(PileMul *p) // p est ma tete
{
MultiFonction *temp;   //temp est un pointeur sur ma classe Multifonction

temp = p->valeur;
do
   {
   cout << "\nLa reference est " << temp->GetRef();
   cout << "\nLe prix est de " << temp->GetPrix() << "\n";
   pause();
   temp = p->suiv;
   }
while ((temp->GetRef() != 0) && (temp->GetPrix() != 0));
}

Aidez moi s'il vous plait, je dois finir ce programme avant demain soir!!!
Merci d'avance

C'EST SUPER URGENT SVP

3 réponses

HSylvio
Messages postés
116
Date d'inscription
jeudi 22 juillet 2004
Statut
Membre
Dernière intervention
14 juin 2012

15 juin 2006 à 17:23
temp = temp->suiv ; au lieu de p peut etre non ??
Sinon jvoudrai bien voir ton remplissage de p...
0
floralastar03
Messages postés
4
Date d'inscription
jeudi 15 juin 2006
Statut
Membre
Dernière intervention
16 juin 2006

15 juin 2006 à 17:32
Non je ne peux pas mettre p au lieu de temp car p->valeur contient l'adresse du pointeur sur l'objet. je dois récupérer cette adresse pour l'affecter dans une variable objet pour pouvoir accéder aux méthodes de la classe.

Voici comment je remplis ma liste : (pour info)
void AjoutM(PileMul *p, MultiFonction *mul)
{
PileMul *temp;

temp = p;
while (temp->suiv != NULL)
   temp = temp->suiv;

temp->valeur = mul;
PileMul *element = malloc(sizeof(PileMul));
element->valeur = NULL;
element->suiv = NULL;
temp->suiv = element;
}
0
cs_JCDjcd
Messages postés
1138
Date d'inscription
mardi 10 juin 2003
Statut
Membre
Dernière intervention
25 janvier 2009
4
15 juin 2006 à 20:34
deux remarques :
* tu n'as pas a faire un <while> pour ajouter un element, regarde d'autres sources pour la programmation des listes, on insere en debut de liste, et non a la fin (sinon la ton algorithme est de complexité pas très "jolie")
* 310560 HSylvio a raison, l'erreur est dans <temp = p->suiv;> car cela ne "balaye" en rien ta liste ! Dans ta fonction tu le fais bien : < temp = temp->suiv;>

Pourquoi faire simple quand on peut faire compliqué ?
0