langage_C/TP1/pile.c
MAO Dongyang 5dadd23503
TP1 TP2 DONE
已完成TP1和TP2
2023-03-09 12:18:23 +01:00

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