empiler depiler et afficher
salut
j'ai un petit truc qui ne marche pas ,il s'agit d'empiler et dépiler une pile et en fie afficher :
tout va bien sauf que lorsque j'empile plusieurs données et je les affiches ,je ne trouve que le derniers répéter plusieurs fois !
voici le code complet :
Code:
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 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61
| #include<stdio.h>
#include<conio.h>
#include<stdlib.h>
typedef struct element
{
int donnee;
struct element *precedent;
}maillon;
typedef maillon* Pile;
Pile empiler(Pile mapile,int donnee)
{
Pile nv=(Pile)malloc(sizeof(maillon));
nv->donnee=donnee;
nv->precedent=mapile;//on fait pointer le precedent de ce nouveau sur le sommet
mapile=nv;//et le sommet deveint le nv element;
return mapile;
}
Pile depiler(Pile mapile)
{
if(mapile==NULL)
{
printf("la pile est vide ");
return NULL;
}
if(mapile->precedent==NULL)
{
free(mapile);
return NULL;
}
Pile nvSommet=mapile->precedent;//o fait stocker l'avant dernier dans une variable temporaire et puis on libert le sommet
free(mapile);
return nvSommet;
}
void affichePile(Pile mapile)
{
if(mapile==NULL)
printf("il y a rien à afficher ");
else
{
Pile tmp=mapile;
while(tmp!=NULL)
{
printf("%d",mapile->donnee);
tmp=tmp->precedent;
}
}
}
int main()
{
Pile mapile=NULL;
mapile=empiler(mapile,1);
mapile=empiler(mapile,2);
mapile=empiler(mapile,3);
mapile=empiler(mapile,4);
affichePile(Pile mapile)
} |
sous le console j'ai 4444!!!
merci de m'aider à trouver le problème :)