49 lines
1.4 KiB
C
49 lines
1.4 KiB
C
/***********************************************/
|
|
/** Implémentation des piles par les tableaux **/
|
|
/***********************************************/
|
|
/***********************************************/
|
|
|
|
#ifndef STACK_H_
|
|
#define STACK_H_
|
|
|
|
#include <stdarg.h>
|
|
#include <stdbool.h>
|
|
|
|
/***********************/
|
|
/* Déclaration du type */
|
|
/***********************/
|
|
|
|
typedef struct {
|
|
int size_array; // Taille totale du tableau alloué en mémoire.
|
|
int size_stack; // Nombre d'éléments dans la pile représentée.
|
|
int *array; // Tableau contenant les valeurs de la pile représentée.
|
|
} stack;
|
|
|
|
/************************/
|
|
/* Fonctions primitives */
|
|
/************************/
|
|
|
|
// Crée une pile vide.
|
|
stack *create_stack(void);
|
|
|
|
// Libère la mémoire allouée pour la pile.
|
|
void delete_stack(stack *);
|
|
|
|
// Renvoie vrai si la pile est vide, faux sinon.
|
|
bool isempty_stack(stack *);
|
|
|
|
// Renvoie le nombre d'éléments dans la pile.
|
|
int size_stack(stack *);
|
|
|
|
// Renvoie la valeur au sommet de la pile et la retire. Si la pile est vide, la
|
|
// fonction affiche un message sur la sortie erreur standard et termine le
|
|
// programme. Si l'occupation du tableau tombe à 25% après le pop(), le tableau
|
|
// est redimensionné par la fonction shrink_stack().
|
|
int pop(stack *);
|
|
|
|
// Ajoute une valeur au sommet de la pile. Si le tableau est plein, il est
|
|
// redimensionné au préalable, par la fonction grow_stack.
|
|
void push(int, stack *);
|
|
|
|
#endif // STACK_H_
|