TP 1: Piles
Informatique pour tous, deuxième année
Julien Reichert
Ce TP permet de mettre en pratique le cours sur les piles en écrivant soi-même une implémentation en Python de
cette structure de données.
Exercice 1 : Recopier le code des opérations de base sur les piles.
Exercice 2 : Écrire les fonctions avancées sur les piles (est_vide(p),taille(p) et sommet(p)).
Exercice 3 : Écrire une fonction qui accède au i-ième élément d’une pile (naturellement et à l’aide des opérations
déjà définies).
Exercice 4 : Écrire une fonction qui échange les deux éléments au sommet d’une pile (idem).
Exercice 5 : Écrire une fonction qui met l’élément du sommet au fond de la pile (idem).
Exercice 6 : Écrire une fonction qui inverse l’ordre des éléments de la pile (idem).
Nous verrons plus en détail la notion de pile d’appels (en Python) dans la section sur la récursivité. Il peut être
intéressant de chercher à provoquer une erreur de dépassement de pile 1, aussi appelée stack overflow.
Une remarque pratique : dans un éditeur tel que Libreoffice, la pile des modifications est de capacité relativement
courte 2. Ici, il s’agit d’une pile dont le fond est progressivement effacé plutôt que de provoquer une erreur quand on
tente d’empiler trop d’éléments. On peut réfléchir à une implémentation de la pile qui utilise toujours un tableau
mais pour lequel le fond de la pile n’est pas nécessairement au début : le premier élément du tableau mémorise non
seulement la taille, mais aussi l’indice de départ, de sorte qu’on écrase le deuxième élément après que le bout du
tableau est atteint. Pour ceux que cela intéresse, cela ressemble grandement à l’implémentation intuitive d’une file
de priorité 3, à l’aide d’un tableau que l’on qualifierait de circulaire, la différence réside dans le fait que retirer un
élément se fait différemment et donc l’indice de départ est modifié à chaque fois que l’on retire un élément.
Exercice 7 : Réaliser cette nouvelle implémentation d’une pile et réécrire les fonctions de ce TP.
1. quand on programme, elles arrivent vite si on fait un oubli bête. . .
2. On voit vite sa limite quand on résout un Su-Doku sur un tableur et qu’on émet des hypothèses. . .
3. hors programme
1