Strucuture pile et file
Chap III : Les structures de données séquentielles
Prof : M.QBADOU 1
Cours Algorithmique
Chap III : Les structures de données séquentielles
Les piles (en anglais stack)
Une pile est une structure de données fondée sur le principe «
Prof : M.QBADOU
dernier arrivé, premier sorti » (ou LIFO pour Last In, First
Out)
† derniers éléments ajoutés à la pile seront les premiers à être les récupérés.
Stockage très temporaire
Analogie avec la pile d’assiette : on ajoute des assiettes sur la pile, et on les récupère dans l'ordre inverse, en commençant par la dernière ajoutée
2
Cours Algorithmique
Chap III : Les structures de données séquentielles
Primitives de manipulation
On peut manipuler une pile avec les primitives : empiler(P , val) : ajoute l’élément val au sommet de la pile P
(push en anglais)
Prof : M.QBADOU
b a
c val
c b a
dépiler(P) : supprime l’élément au sommet de la pile P (pop en anglais) b a b val
3
a
Cours Algorithmique
Chap III : Les structures de données séquentielles
sommet(P) : renvoie le dernier élément ajouté et non encore retiré : le sommet ( top en anglais) c b a c b a c
Prof : M.QBADOU
estVide(P) : Renvoie vrai si la pile est vide et faux sinon (empty)
4
Cours Algorithmique
Chap III : Les structures de données séquentielles
Utilisation des Piles
Prof : M.QBADOU
La fonction « Annuler la frappe » (en anglais Undo) mémorise les modifications apportées au texte dans une pile. Parseur d’expressions XML, des pages web Algorithme de recherche en profondeur dans un graphe utilise une pile pour mémoriser les nœuds visités Les algorithmes récursifs utilisent implicitement une pile d'appels
La plupart des microprocesseurs gèrent nativement une pile. Cas x86 :
Le registre ESP sert à indiquer l'adresse du sommet d'une pile dans la RAM. † opcodes "push" et "pop" permettent respectivement d'empiler et de dépiler Les des données.