Salut,
fichier d'en-tête
/*********************\
* pile.h *
\*********************/
typedef struct ElementListe{
char *donnee;
struct ElementListe *suivant;
} Element;
typedef struct ListeRepere{
Element *debut;
int taille;
} Liste;
/* initialisation */
void initialisation (Liste * liste);
/* EMPILER*/
int empiler (Liste * liste, Element * courant, char *donnee);
/* DEPILER*/
int depiler (Liste * liste);
/* LastInFirstOut */
void affiche_dernier (Liste * liste);
Les fonctions/***********************\
* pile_function.h *
\***********************/
void initialisation (Liste * liste){
liste->debut = NULL;
liste->taille = 0;
}
int empiler (Liste * liste, Element * courant, char *donnee){
Element *nouveau_element;
if ((nouveau_element = (Element *) malloc (sizeof (Element))) == NULL)
return -1;
if ((nouveau_element->donnee = (char *) malloc (50 * sizeof (char)))
== NULL)
return -1;
strcpy (nouveau_element->donnee, donnee);
nouveau_element->suivant = liste->debut;
liste->debut = nouveau_element;
liste->taille++;
}
int depiler (Liste * liste){
Element *supp_element;
if (liste->taille == 0)
return -1;
supp_element = liste->debut;
liste->debut = liste->debut->suivant;
free (supp_element->donnee);
free (supp_element);
liste->taille--;
return 0;
}
void affiche_dernier (Liste * liste){
/* le dernier entre et le 1er affiche (LastInFirstOut) */
printf ("dernier entrer premier sortie (LIFO): %s\n",
liste->debut->donnee);
}
main/*********************\
* pile.c *
\*********************/
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include "pile.h"
#include "pile_function.h"
int main ()
{
Liste *liste;
char *nom;
if ((liste = (Liste *) malloc (sizeof (Liste))) == NULL)
return -1;
if ((nom = (char *) malloc (50 * sizeof (char))) == NULL)
return -1;
initialisation (liste);
printf ("Entrez un mot : ");
scanf ("%s", nom);
empiler (liste, NULL, nom);
affiche_dernier (liste); /*le dernier entre sera affiche */
printf ("La pile(%d): %s\n",
liste->taille,
liste->debut->donnee);
printf ("Entrez un mot : ");
scanf ("%s", nom);
empiler (liste, NULL, nom);
affiche_dernier (liste);
printf ("La pile(%d):%s,%s\n",
liste->taille,
liste->debut->donnee,
liste->debut->suivant->donnee);
printf ("Entrez un mot : ");
scanf ("%s", nom);
empiler (liste, NULL, nom);
printf ("La pile(%d): %s,%s,%s\n",
liste->taille,
liste->debut->donnee,
liste->debut->suivant->donnee,
liste->debut->suivant->suivant->donnee);
affiche_dernier (liste);
printf ("Le dernier entre est supprime");
depiler (liste); /* suppression de dernier element entre */
printf ("\nLa pile(%d): %s,%s\n",
liste->taille,
liste->debut->donnee,
liste->debut->suivant->donnee);
return 0;
}
--
lami20j