Problème pile

Bonjour. Je suis en train de découvrir les piles et j'ai écrit un petit code pour m'entraîner mais lorsque j'execute, lors de l'affichage, le premier élément s'affiche à l'infini. Voici mon code et merci d'avance pour votre aide
#include <stdio.h>
#include <stdlib.h>
 
typedef struct element element;
struct element
{
    int valeur;
    element *suivant;
};
typedef struct element* Pile;
void creationPile(Pile pile,int n);
void affichagePile(Pile pile);
 
int main(void)
{  
    int taille;
    Pile maPile;
    maPile=malloc(sizeof(Pile));
    if(maPile==NULL)
    {
        printf("Erreur allocation dynamique");
        exit(EXIT_FAILURE);
    }
    printf("Nous allons travailler sur les Piles\n");
    do
    {
        printf("Entrer la taille de la Pile\n");
        scanf("%d",&taille);
    } while (taille<=0);
    creationPile(maPile,taille);
    affichagePile(maPile);
    return 0;
}
 
void creationPile(Pile pile,int n)
{
    Pile prem,tmp;
    int donnee,i;
    prem=pile;
    printf("Entrer le premier élément\n");
    scanf("%d",&donnee);
    prem->valeur=donnee;
    prem->suivant=NULL;
    for(i=2;i<=n;i++)
    {
        printf("Entrer l'élément suivant\n");
        scanf("%d",&donnee);
        tmp->valeur=donnee;
        tmp->suivant=prem;
        prem=tmp;
    }
}
 
void affichagePile(Pile pile)
{
    Pile a;
    a=malloc(sizeof(Pile));
    a=pile;
    if(a==NULL)
    { 
        exit(EXIT_FAILURE);
    }
    else
    {
        while (a!=NULL)
        {
            if(a->suivant!=NULL)
            {
                printf("%d\n---\n",a->valeur);
                a=a->suivant;
            }
            else
            {
                printf("%d",a->valeur);
            }
             
        }
         
    }
     
}

Message modifié par la modération
Pour une lecture plus facile du code, à l'avenir utilisez les balises, VOIR CETTE PAGE

2 réponses

  • Votes
  • Date
  • Date décroissante
  1. Contributeur
    bonjour, es-tu également en train de découvrir malloc()?
    1. Disons que je suis un débutant donc oui
      1. Contributeur
        je pense alors que tu essaies de faire un exercice compliqué avant d'avoir maîtrisé des concepts de base.
        dans quel contexte fais-tu cet exercice?