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 : Sélectionner tout - Visualiser dans une fenêtre à part
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