Wallon
licence

Numérique et Sciences Informatiques en Terminale


TP
TP

Structures de données

Les piles et les files



1 ) Les piles

Une pile est une structure de données qui permet d'accéder en premier à la dernière donnée ajoutée ; on peut imaginer une pile de dossiers ou une pile d'assiettes, l'objet situé au sommet de la pile sera le premier à être sorti :
On parle de structure ou de pile LIFO (stack en anglais). LIFO est l'abbréviation de Last In First Out (dernière donnée entrée , première donnée sortie).

Ci dessous des liens vers des vidéos permettant d'asseoir les connaissances :

Une pile est une structure utilisant 2 opérations élémentaires : empiler et dépiler.
python

Voici les opérations que l'on peut réaliser sur une pile :

  • on peut créer une pile vide                                                      ( creer_pile_vide() retourne un objet de type pile)
  • on peut savoir si une pile est vide                                            (pile_vide(P) retourne un booléen)
  • on peut empiler un nouvel élément sur la pile (push)                 (empiler (P,e)insère un élément au sommet de la pile)
  • on peut récupérer l'élément au sommet de la pile tout en le supprimant.
    on dit que l'on dépile (pop)                                                      (dépiler (P)retourne l'élément qui est au sommet de la pile et l'enlève de la pile)
  • on peut accéder à l'élément situé au sommet de la pile sans le supprimer de la pile (top)        (sommet (P)renvoie l'élémént du dessus)
  • on peut connaitre le nombre d'éléments présents dans la pile (size)                                      (taille(P)renvoie le nombre d'éléménts de la pile)
  • on peut savoir si une pile est pleine                                         (pile_pleine(P) retourne un booléen)

Exemples :

Voici une série d'instructions (les instructions ci-dessous s'enchaînent):

  • P=creer_pile_vide() => on a créé une pile vide
  • pile_vide(P) => renvoie vrai
  • empiler (P,3) => La pile P contient maintenant l'élément 3
  • pile_vide(P) => renvoie faux
  • empiler (P,2) => La pile P contient maintenant les éléments 2 et 3
  • N = dépiler (P) => la variable N vaut 2, la pile contient l'élément 3 ; 2 disparait de la pile
  • empiler (P,5) => La pile P contient maintenant les éléments 5 et 3
  • empiler (P,7) => La pile P contient maintenant les éléments 7,5 et 3
  • empiler (P,9) => La pile P contient maintenant les éléments 9,7,5 et 3
  • pile_vide(P) => renvoie faux

Exercice 1

Soit une pile P composée des éléments suivants : 12, 10, 8, 7, 13 et 25 (le sommet de la pile est 25) Pour chaque exemple ci-dessous on repart de la pile d'origine :

  • que renvoie pop(P) ? que contient la pile P après ce pop ? quel est le sommet de la pile ?
  • donner la composition de la pile après push(P,63) ?
  • que renvoie top(P) ?
  • si on applique pop(P) 6 fois de suite, que renvoie pile_vide(P) ?
  • Après avoir appliqué pop(P) une fois, que renvoie size(P) ?

En python

Si (P[0]== 1), la pile est vide et on augmente P[0] d'une unité à chaque fois qu'on insère un élément, la première case permet de connaitre le nombre d'éléments présents dans la pile
Si (P[0]== n+1), la pile est pleine et on diminue P[0] d'une unité à chaque fois qu'on enlève un élément .
Pour implémenter une PILE en python, on peut utiliser un code comme celui-ci :

python

Exercice 2

Recopiez ce code et testez le dans Thonny
Quel est le contenu de liste pour les lignes 23 à 29 ?

loi








TP
TP