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
|
#include <stdlib.h>
#include <stdio.h>
#include "main.h"
int main(void) {
int compte = 0;
int valeur = 0;
Pile *pile = creerPile(1);
Pile *element2 = (Pile*) malloc(sizeof(Pile));
Pile *element3 = (Pile*) malloc(sizeof(Pile));
element2->valeur = 2;
element2->element_precedent = NULL;
element3->valeur = 3;
element3->element_precedent = NULL;
printf("Adresse de la pile : %d\n", pile);
printf("Adresse de l'element 2 : %d\n", element2);
printf("Adresse de l'element 3 : %d\n\n\n", element3);
ajouterNouvelElement(pile, element2);
pile = element2;
printf("Adresse de l'ancienne pile (element 1) : %d\n", pile->element_precedent);
printf("Adresse de la nouvelle pile (element 2) : %d\n\n\n", pile);
ajouterNouvelElement(pile, element3);
pile = element3;
printf("Adresse de l'ancienne pile (element 2) : %d\n", pile->element_precedent);
printf("Adresse de la nouvelle pile (element 3) : %d\n\n\n", pile);
valeur = enleverElement(pile);
printf("Adresse de l'ancien element empile : %d\n", pile->element_precedent);
printf("Adresse du haut de la pile : %d\n", pile);
free(pile);
return 0;
}
Pile *creerPile(int valeur) {
Pile *nouveauPointeur = (Pile*) malloc(sizeof(Pile));
// Pile *nouveauPointeur; Fait planter le programme, mais pourquoi ?
nouveauPointeur->valeur = valeur;
nouveauPointeur->element_precedent = NULL;
return nouveauPointeur;
}
void ajouterNouvelElement(Pile *pile, Pile *nouvelElement) {
nouvelElement->element_precedent = pile;
}
int enleverElement(Pile *pile) {
if (pile == NULL) {
exit(EXIT_FAILURE);
}
int nombreDepile = 0;
if (pile != NULL && pile->element_precedent != NULL) {
nombreDepile = pile->valeur;
pile = pile->element_precedent;
printf("%d\n", pile);
}
return nombreDepile;
} |
Partager