J'ai un probleme dans la fonction afficher_pile

matadorca -  
armasousou Messages postés 1351 Statut Membre -
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;
}

1 réponse

  1. armasousou Messages postés 1351 Statut Membre 83
     
    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
    1. matadorca
       
      et comment p passe a l'élément suivant
      0
    2. armasousou Messages postés 1351 Statut Membre 83
       
      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
    3. matadorca
       
      tmp et de type pile et p et de type pointeur sur pile l'affectation et impossible j pense
      0
    4. armasousou Messages postés 1351 Statut Membre 83
       
      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
    5. matadorca
       
      boucle infini
      0