salut tout le monde,
je voudrais depilerune pile mais apparemment ça marche pas bien;
après la fonction de:
on m'affiche une pile vide,on doit m'afficher une pile avec le dernier élément supprimé,non?Code:pile depiler(pile P);
par exemple :
soit une pile :
10 9 8 .... 0
après depiler:
la pile devient:
9 8 7 ......0
voici le code:
merci de m'aider!Code:typedef struct element { int donnee; struct element* precedent; }maillon; typedef maillon* pile; pile empiler(pile,int); pile depiler(pile); void affichage(pile); int main() { pile mapile=NULL; int i; for (i=0 ; i<=10 ; i++) mapile=empiler(mapile,i); printf("\navant:\n"); affichage(mapile); mapile=depiler(mapile); printf("\napres:\n"); affichage(mapile); getch(); return 0; } pile empiler(pile P,int valeur) { maillon* nvP=(maillon*)malloc(sizeof(maillon)); if (nvP!=NULL) { nvP->donnee=valeur; if (P==NULL) { P=nvP; nvP->precedent=NULL; return P; } else { nvP->precedent=P; P=nvP; return P; } } } void affichage(pile P) { maillon* temp=P; while (temp!=NULL) { printf("%d \n",temp->donnee); temp=temp->precedent; } } pile depiler (pile P) { if (P==NULL) return NULL; if (P->precedent=NULL) { free(P); return NULL; } maillon* temp=P->precedent; free(P); P=temp; return P; }
-----