Fonction de la Pile
Fermé
ahlam1
Messages postés
23
Date d'inscription
mercredi 19 août 2009
Statut
Membre
Dernière intervention
1 avril 2011
-
2 janv. 2010 à 21:42
ahlam - 3 janv. 2010 à 01:11
ahlam - 3 janv. 2010 à 01:11
A voir également:
- Fonction de la Pile
- Pile carte mere - Guide
- Fonction si et - Guide
- Fonction moyenne excel - Guide
- Durée de fonctionnement processeur ✓ - Forum Windows 10
- La pile présente sur la carte mère sert à - Forum Carte-mère/mémoire
2 réponses
Pacorabanix
Messages postés
3248
Date d'inscription
jeudi 23 août 2007
Statut
Membre
Dernière intervention
19 mai 2013
661
2 janv. 2010 à 21:49
2 janv. 2010 à 21:49
le principe d'une pile, c'est comme une pile d'assietes. Qu'est ce qu'on enlève ? celle du dessus. (où est-ce qu'on rajoute une nouvelle assiette? au dessus). Qu'est ce qu'on voit quand on regarde la pile ? Celle du dessus.
Le pointeur de la pile pointe sur celle qu'il faut enlever lorsqu'on dépile. C'est tout l'intérêt de la pile que de pouvoir accéder rapidement et directement à l'endroit où on ajoute et où on enlève des choses.
Il faut que vos revoyiez votre conception de ce petit algorithme.
Cela dit, pour parler de votre code directement, il y a un "problème" de logique ici :
der->setsuiv(chn->getsuiv());
lorsqu'on arrive là, chn->getsuiv() vaut forcément NULL (à cause du while) .
Cette ligne veut simplement dire : der->setsuiv(NULL).
Et c'est inutile car en sortant de la boucle, der pointe effectivement sur le dernier élément, et donc son pointeur suivant est déjà NULL.
Le pointeur de la pile pointe sur celle qu'il faut enlever lorsqu'on dépile. C'est tout l'intérêt de la pile que de pouvoir accéder rapidement et directement à l'endroit où on ajoute et où on enlève des choses.
Il faut que vos revoyiez votre conception de ce petit algorithme.
Cela dit, pour parler de votre code directement, il y a un "problème" de logique ici :
der->setsuiv(chn->getsuiv());
lorsqu'on arrive là, chn->getsuiv() vaut forcément NULL (à cause du while) .
Cette ligne veut simplement dire : der->setsuiv(NULL).
Et c'est inutile car en sortant de la boucle, der pointe effectivement sur le dernier élément, et donc son pointeur suivant est déjà NULL.
ahlam1
Messages postés
23
Date d'inscription
mercredi 19 août 2009
Statut
Membre
Dernière intervention
1 avril 2011
2
2 janv. 2010 à 22:50
2 janv. 2010 à 22:50
mais
a la fin de la boucle while <der> va pointer sur l'avant dernier element et chn va pointer sur le dernier element qui va etre suprimer apres
donc der->getsuiv() va pointer sur le dernier element
a la fin de la boucle while <der> va pointer sur l'avant dernier element et chn va pointer sur le dernier element qui va etre suprimer apres
donc der->getsuiv() va pointer sur le dernier element
3 janv. 2010 à 01:11
si vous avez une idée comment écrire la fonction depiler() <<en utilisant les liste chainée cad ce n'est pas static cad ne pas utiliser un tableau>> je serai très très reconnaissante
car je ne sais pas comment conserver l'avant dernier élément pour mettre son suivant a NULL