J'ai un probleme dans la fonction afficher_pile

Fermé
matadorca - 17 févr. 2013 à 13:23
armasousou Messages postés 1270 Date d'inscription dimanche 16 août 2009 Statut Membre Dernière intervention 30 décembre 2016 - 17 févr. 2013 à 21:28
Bonjour,



#include<stdio.h>
typedef struct element element;
struct element
{
int elem;
element *sui;
};
typedef element *pile;
void pile_vide(pile *p1)
{
p1=NULL;
}
void remplir_pile(pile *p,int n)
{
int nvelem,i;
element *p1;
p1=(element*)malloc(sizeof(element));
printf("donner le premier element a inserer\n");
scanf("%d",&nvelem);
p1->elem=nvelem;
printf("%d",p1->elem);
p1->sui=NULL;
*p=p1;
printf("%d",(*p)->elem);
for(i=1;i<n;i++)
{
p1=(element*)malloc(sizeof(element));
printf("donner la %d element a inserer\n",i);
scanf("%d",&nvelem);
p1->elem=nvelem;
p1->sui=*p;
printf("%d\n",p1->elem);
*p=p1;
printf("%d",(*p)->elem);
}
free(p1);
}
void afficher_pile(pile *p,int n)
{
int i;
element *p1=*p;
printf("%d\n",(*p)->elem);
for(i=0;i<n;i++)
{
printf("la %d elem est %d\n",i,p1->elem);
p1=p1->sui;
}
}
main()
{
int n;
pile *p1;
printf("donner le nombr des enrig\n");
scanf("%d",&n);
pile_vide(p1);
remplir_pile(p1,n);
afficher_pile(p1,n);
system("pause");
return 0;
}
A voir également:

1 réponse

armasousou Messages postés 1270 Date d'inscription dimanche 16 août 2009 Statut Membre Dernière intervention 30 décembre 2016 83
17 févr. 2013 à 17:06
J'aime pas du tout ta façon d'ecrire, mais sinon ça donne ca

void afficher_pile(pile *p)
{
int i=0;
while(p != NULL)
{
printf("element %d: %d", i, p->elem);
i++;
}
}
0
et comment p passe a l'élément suivant
0
armasousou Messages postés 1270 Date d'inscription dimanche 16 août 2009 Statut Membre Dernière intervention 30 décembre 2016 83
17 févr. 2013 à 17:24
Oups, oublié un bout désolé xD

void afficher_pile(pile *p)
{
pile tmp = p
int i=0;
while(tmp != NULL)
{
printf("element %d: %d", i, tmp->elem);
tmp=tmp->suivant;
i++;
}
}
0
tmp et de type pile et p et de type pointeur sur pile l'affectation et impossible j pense
0
armasousou Messages postés 1270 Date d'inscription dimanche 16 août 2009 Statut Membre Dernière intervention 30 décembre 2016 83
Modifié par armasousou le 17/02/2013 à 18:45
J'avais pas trop regarder tes structures, ca donne plutot ça :

void afficher_pile(pile *p)
{
pile tmp = *p
int i=0;
while(tmp != NULL)
{
printf("element %d: %d", i, tmp->elem);
tmp=tmp->suivant;
i++;
}
}
0
boucle infini
0