1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
|
void Pile::Depiler()
{
cellule * p;
p = debut;
sommet = NULL;
if (p != NULL)
{// on ne sait jamais ta pile peut être vide
while (p->suivant != NULL)
{
p = p->suivant;
if (p->suivant != NULL)
{
sommet = p; // Ca t'assure que le sommet pointe sur l'avant dernière cellule (sachant que tu vas supprimer la dernière)
}
}
// delete p->suivant; // commenté car inutile, p->suivant étant NULL de par la condition d'arrêt de ta boucle, tu remarqueras que ça ne plante pas car delete NULL n'a aucun effet
if (p == debut)
{// il n'y avait qu'un seul élément dans ta pile
debut = NULL;
}
delete p;
sommet->suivant = NULL;
taille--;
}
} |