Les piles

Dans cette partie nous allons analyser une nouvelle structure de données : les piles. Les piles sont extrèmement utiles en informatique et vous les utilisez quotidiennement, parfois même sans vous en rendre compte :
  • La fonction annuler Ctrl-Z de votre traitement de textes par exemple est une pile : Quand vous tapez Ctrl-Z, vous annulez la dernière opération effectuée. Quand vous faites une nouvelle opération, celle-ci est mémorisée au sommet de la pile. Vous ne pouvez pas annuler l'avant dernière opération sauf à annuler la dernière.
  • Le bouton retour de votre navigateur internet fonctionne également à l'aide d'une pile. Les pages web consultées lors de votre navigation sur une page sont empilées et le bouton retour permet d'accéder à la dernière page présente sur la pile.
  • Certaines calculatrices fonctionnent à l'aide du'une pile pour stocker les arguments des opérations : c'est le cas de beaucoup de calculatrices de la marque HP, dont la première calculatrice scientifique ayant jamais été produite : la HP 35 de 1972.

  • Une pile est une liste particulière ou l'on accède uniquement au dernier élément que l'on nomme le sommet de la pile.
    Le dernier élément entré est le premier à sortir.


    Représentation
    On représente en général cette structure sous forme verticale.

    On peut prendre pour exemple une pile d'assiettes : La dernière assiette rangée sera la première que l'on ressortira. On parle parfois de pile LIFO (Last In First Out : dernier entré, premier sorti).

    L'interface



    Les opérations permises sur les piles sont plus simples que sur les listes. Voici les quelques primitives des piles :


    Les primitives
  • creer : créer une pile vide
  • empiler un nouvel élément (ajouter un élément au sommet de la pile)
  • dépiler le dernier élément saisi
  • de consulter la valeur de l'élément au sommet de la pile sans le dépiler
  • de tester si la pile est vide
  • de connaître le nombre d'éléments dans la pile.

  • Exercice
    On contruite une pile avec les instructions suivantes :
  • créer une pile vide nommée p
  • empiler "R" dans p
  • empiler "U" dans p
  • empiler "O" dans p
  • empiler "J" dans p
  • empiler "B" dans p
  • empiler "R" dans p
  • depiler p
  • depiler p
  • empiler "N" dans p
  • empiler "O" dans p
  • empiler "O" dans p
  • depiler p
  • empiler "B" dans p
  • Si après ces instruction, on depile tous les éléments de la pile, quel mot apparaît

    L'implémentation


    Pour l'implémentation en python c'est dans le TD que ça se passe :

    Accéder au TD

    Entrer le code de fin de TD :