36 lines
1.3 KiB
C
36 lines
1.3 KiB
C
#include "pile.h"
|
|
|
|
struct Pile* pileInit(){
|
|
struct Pile *pile = malloc(sizeof(*pile));
|
|
pile->pos = -1;
|
|
return pile;
|
|
} // Initialisation de la pile
|
|
|
|
|
|
char* pilePop(struct Pile *pile){
|
|
if(pile->pos == -1){
|
|
printf("pilePop : ERROR PILE VIDE");
|
|
return NULL;
|
|
} // si pos = -1, cela signifie que la pile est vide, donc on ne peut pas retirer d'éléments de la pile
|
|
pile->pos--; // on décrémente pos car on va retirer le dernier élément, donc la taille de la pile va diminuer
|
|
return pile->stack[pile->pos+1]; // on retire le dernier élément
|
|
}
|
|
|
|
void pilePush(struct Pile *pile, char *string){
|
|
if(pile->pos == TAILLE_PILLE){
|
|
printf("pilePush : ERROR PILE PLEINE");
|
|
} // si la taille de la pile est égale à la valeur dans pos, la pile est pleine, on ne peut donc pas ajouter d'éléments dedans
|
|
else {
|
|
pile->pos++;
|
|
strcpy(pile->stack[pile->pos], string);
|
|
} // sinon, on incrémente pos et on ajoute l'élément demandé grâce à la fonction strcpy
|
|
}
|
|
|
|
char* pileTop(struct Pile *pile){
|
|
return pile->stack[pile->pos];
|
|
} // renvoie la dernière valeur de la pile
|
|
|
|
int pileSize(struct Pile *pile){
|
|
return pile->pos;
|
|
} // retourne la taille actuelle de la pile
|