Structure de pile PC* I : Les piles Une manière naturelle de ranger des objets dans un placard, sur un bureau ou même dans une pochette de cours est de les empiler. C'est une opération peu coûteuse car "ranger" un nouvel élément consiste simplement à le mettre au-dessus de la pile. Ce mode de rangement est adapté à des données dont on ne connaît pas à l'avance le nombre. Une pile d'assiettes peut être par exemple (en théorie) de hauteur illimitée ! Ce beau rangement a cependant un inconvénient : on ne peut accéder qu'au dernier élément rangé, celui qui est au dessus de la pile. Pensez au moment où, devant la pile de vos pulls soigneusement pliés, vous réalisez que vous voulez atteindre celui du bas ! À une structure de pile on associe l'acronyme anglais imagé LIFO : Last In, First Out c.a.d. dernier entré, premier sorti. 1. Quelques exemples (a) Répondre au courrier avec une structure de pile. Qu'en penser ? (b) Stocker les pages visitées lors d'une navigation sur la toile. (c) Stockage des instructions eectuées dans une logiciel de traitement de texte. Utilité ? (d) Préparation des étapes d'une recette de cuisine, d'une réaction chimique... (e) Comment coder sous forme d'une pile l'ensemble des opérations aboutissant au calcul de A = (1 + 2)4 + 3 ? 2. Opérations sur les piles On doit pouvoir disposer des opérations élémentaires naturelles : créer une pile, empiler un élément au dessus de la pile, ôter un élément du dessus de la pile (dépiler). On peut par exemple noter : (a) (c) : renvoie une nouvelle pile de capacité c qui est initialement vide. Mais, si cela est possible, on cherchera à créer une pile sans préciser à priori de capacité maximale. On devrait disposer de creer_pile() : crée et renvoie une liste vide. creer_pile I.P.T. 1 Structure de pile PC* (b) (p) : dépile et retourne le sommet de la pile p. Cette pile est modiée. En anglais pop. (c) empiler(p,a) : place la valeur a sur le sommet de la pile p. La pile est modiée. En anglais push. depiler 3. Opérations complémentaires sur les piles On utilise également couramment les fonctions primitives suivantes : (a) taille(p) : retourne le nombre d'éléments présents dans la pile. (b) est_vide(p) : renvoie True si la liste est vide, False sinon. (c) sommet(p) : retourne l'élément situé au sommet de la pile, sans modier la pile. (en anglais peek). II : Simulation des piles avec Python 1. Utilisation des listes Une liste python peut représenter une pile en convenant que l'élément le plus à droite représente le sommet de la pile. Des exemples de fonctions élémentaires pour manipuler des listes comme des piles. def creer_pile : ◦ creer_pile() : return [ ] (p,a) : ◦ empiler ◦ depiler ◦ sommet ◦ est_vide (p) : def def (p) : def (p) : empiler(p, a) : p.append(a) depiler(p) : p.pop() sommet(p) : return p[−1] def est_vide(p) : len(p) == 0 2. Convention d'utilisation Si on veut simuler un problème utilisant une structure de pile on pourra si on le désire les listes en se limitant aux opérations de base qui leur donne cette structure de pile. Les écritures d'algorithme peuvent s'écrire elles en utilisant la sytaxe des fonctions empliler, depiler etc I.P.T. 2
© Copyright 2025 ExpyDoc