I – Introduction
II – Principe
III – En pratique
III-A – La structure d’un élément
III-B – Initialisation
III-C – Empiler un élément
III-D – Dépiler un élément
III-E – Suppression de la pile
IV – Conclusion
VII – Remerciements
VI – Code source complet
Introduction
Pour poursuivre la découverte des différentes structures de données, nous allons maintenant nous attarder sur les piles.
Principe
Les piles peuvent être représentées comme une pile d’assiettes, vous pouvez ajouter des assiettes au sommet de la pile et lorsque vous voulez en enlever une, il s’agit de la dernière ajoutée : on parle de liste LIFO (Last In First Out). Les piles ne sont que des cas particuliers de listes chaînées dont les éléments ne peuvent être ajoutés et supprimés qu’en fin de liste. De ce fait la manipulation s’en trouve grandement simplifiée puisqu’elle ne nécessite que deux fonctions :
•Une fonction pour ajouter un élément au sommet de la pile
•Une seconde pour le retirer
En pratique
La structure d’un élément
Pour représenter un élément de la pile, il nous suffit de reprendre la structure d’un élément d’une liste doublement chaînée.
typedef structstack
{
structstack *prev;
structstack *next;
void *data;
}stack_s;
Initialisation
Rien de nouveau côté initialisation, on s’assure juste que le pointeur qui servira de pile est bien mit à NULL.
stack_s *stack_new (void)
{
return(NULL);
}
Empiler un élément
Les éléments ne peuvent être ajoutés qu’en fin de liste, il n’est donc plus nécessaire de se préoccuper d’un éventuel élément suivant. A part ce détail, c’est exactement le même code que pour les listes doublement chaînées.
…..
Les piles en C (101 KO) (Cours PDF)