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]
FalseEn 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 listListe. 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
FalseChoisir 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.
| Instruction | s après | x |
|---|---|---|
| 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 |
4Mê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)9Bloc 4 sur 7 · Visualiser
Voir : pile et file côte à côte
| Critère | Pile | File |
|---|---|---|
| Principe | dernier entré, premier sorti (LIFO) | premier entré, premier sorti (FIFO) |
| Ajouter | empiler au sommet : append(v) | enfiler en queue : append(v) |
| Retirer | dépiler le sommet : pop() | défiler la tête : pop(0) |
| Après ajouts de 3, 7, 5, on retire | 5 | 3 |
| Exemples | annuler une action, appels de fonctions | file 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.