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 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82
| typedef struct ElementListe{
char *donnee;
struct ElementListe *suivant;
} Element;
typedef struct ListeRepere{
Element *debut;
int taille;
} Pile;
/* initialisation */
void initialisation (Pile *tas);
/* EMPILER*/
int empiler (Pile *tas, char *donnee);
/* DEPILER*/
int depiler (Pile *tas);
/* Affiche la pile */
void affiche (Pile *tas);
void main()
{
initialisation (struct Pile *tas);
printf("initialisation");
// empiler (Pile *tas, *donnee);
printf("L'empilage");
depiler (Pile*tas);
printf("Dépilage");
// affiche (Pile *tas);
printf("Affichage pile");
}
void initialisation (Pile * tas){
tas->debut = NULL;
tas->taille = 0;
}
/* empiler (ajouter) un élément dans la pile */
int empiler (Pile * tas, 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 = tas->debut;
tas->debut = nouveau_element;
tas->taille++;
}
/* depiler (supprimer un élément de la pile */
int depiler (Pile * tas){
Element *supp_element;
if (tas->taille == 0)
return -1;
supp_element = tas->debut;
tas->debut = tas->debut->suivant;
free (supp_element->donnee);
free (supp_element);
tas->taille--;
return 0;
}
/* affichage de la pile */
void affiche (Pile * tas){
Element *courant;
int i;
courant = tas->debut;
for(i=0;i<tas->taille;++i){
printf("\t\t%s\n", courant->donnee);
courant = courant->suivant;
}
} |
Partager