Aller au contenu principal

Informatique · Terminale · 4 min de lecture

Piles, files et listes

Structures linéaires caractérisées par leurs opérations : pile (empiler, dépiler, tester si vide ; mode LIFO, le dernier entré est le premier sorti) ; file (enfiler, défiler ; mode FIFO, le premier entré est le premier sorti) ; liste (tête et queue) ; dictionnaire (accès par clé) ; choisir la structure adaptée à une situation ; une recherche dans une liste est linéaire, un accès par clé dans un dictionnaire ne parcourt pas les éléments.

Chapitre du programme : Numérique et sciences informatiques (spécialité)

Bloc 1 sur 7 · Comprendre

Comprendre : une structure se définit par ses opérations

Une pile et une file rangent des éléments les uns à la suite des autres. Ce qui les distingue, c'est l'élément que l'on retire :

  • Pile (comme une pile d'assiettes) : on empile au sommet et on dépile le sommet. Le dernier entré est le premier sorti (mode LIFO, de l'anglais last in, first out).
  • File (comme une file d'attente) : on enfile en queue et on défile la tête. Le premier entré est le premier sorti (mode FIFO, first in, first out).

Une liste Python peut jouer les deux rôles. En pile : append empile, pop() dépile le dernier élément.

pile = []
pile.append(3)
pile.append(7)
pile.append(5)
print(pile.pop())
print(pile)
print(len(pile) == 0)
5
[3, 7]
False

En file : append enfile en queue, pop(0) défile le premier élément.

file = []
file.append(3)
file.append(7)
file.append(5)
print(file.pop(0))
print(file)
3
[7, 5]

Bloc 2 sur 7 · Approfondir

Approfondir : pile vide, liste, dictionnaire

Tester si la structure est vide avant de retirer un élément : len(pile) == 0. Retirer d'une pile vide provoque une erreur :

pile = []
print(pile.pop())
IndexError: pop from empty list

Liste. Une liste se décrit par sa tête (le premier élément) et sa queue (la liste des éléments suivants). Pour savoir si une valeur y figure, il faut la parcourir : la recherche est linéaire.

Dictionnaire. Il associe des valeurs à des clés : on lit une valeur directement par sa clé, sans parcourir les éléments.

ages = {"Alice": 16, "Bilal": 17, "Chloé": 16}
print(ages["Bilal"])
print("Emma" in ages)
17
False

Choisir la structure. Annuler la dernière action (bouton « Annuler », retour arrière d'un navigateur) : une pile. Traiter des demandes dans leur ordre d'arrivée (impressions, clients au guichet) : une file. Retrouver une information par un identifiant : un dictionnaire.

Bloc 3 sur 7 · Exemple

Exemple guidé : la même suite d'opérations, deux résultats

Énoncé. La liste s est utilisée comme une pile. Quel nombre ce programme affiche-t-il ?

s = []
s.append(12)
s.append(4)
s.append(9)
x = s.pop()
s.append(20)
x = s.pop()
x = s.pop()
print(x)

Méthode : écrire le contenu de s après chaque instruction.

Tableau : Instruction, s après, x
Instructions aprèsx
append(12), append(4), append(9)[12, 4, 9]—
x = s.pop()[12, 4]9
append(20)[12, 4, 20]9
x = s.pop()[12, 4]20
x = s.pop()[12]4
4

Même suite en file, avec pop(0) : les retraits donnent 12, puis 4, puis 9.

s = []
s.append(12)
s.append(4)
s.append(9)
x = s.pop(0)
s.append(20)
x = s.pop(0)
x = s.pop(0)
print(x)
9

Bloc 4 sur 7 · Visualiser

Voir : pile et file côte à côte

Tableau : Critère, Pile, File
CritèrePileFile
Principedernier entré, premier sorti (LIFO)premier entré, premier sorti (FIFO)
Ajouterempiler au sommet : append(v)enfiler en queue : append(v)
Retirerdépiler le sommet : pop()défiler la tête : pop(0)
Après ajouts de 3, 7, 5, on retire53
Exemplesannuler une action, appels de fonctionsfile d'attente, impressions

Continuez sur votre lancée

Vous avez découvert l’essentiel et un exemple. Retrouvez la suite du cours et les points à retenir, puis passez à l’entraînement guidé dans votre compte.

  • Les formules et les repères à retenir
  • Les erreurs fréquentes expliquées
  • Un exercice avec des aides et sa correction

L’accès gratuit comprend les cours et exercices de votre niveau choisi.

Sources

  • BO spécial n°8 du 25 juillet 2019 — programme de spécialité numérique et sciences informatiques de terminale générale, annexe (https://eduscol.education.fr/document/30010/download) — rubrique « Structures de données », listes, piles, files, dictionnaires
  • T. H. Cormen, C. E. Leiserson, R. L. Rivest, C. Stein, Algorithmique (Introduction to Algorithms), 3e édition française, Dunod — chapitre 10, « Structures de données élémentaires » (piles et files)
  • Documentation officielle de Python 3, The Python Language Reference et The Python Standard Library (https://docs.python.org/3/) — The Python Tutorial, « Using Lists as Stacks », « Using Lists as Queues »

Vous pensez avoir trouvé une erreur dans cette leçon ? Signalez-la par e-mail.

Explorer les autres cours

Accès rapide