Numérique et Sciences Informatiques > Algorithmique : Structures de Données Avancées > Piles et Files > Principes LIFO et FIFO
Piles et Files : Comprendre les principes LIFO et FIFO
Explorez les concepts fondamentaux des piles (LIFO) et des files (FIFO) en informatique. Découvrez leurs fonctionnements, leurs applications pratiques et comment les implémenter.
Introduction aux Structures de Données Linéaires
Les structures de données linéaires sont des organisations séquentielles d'éléments. Parmi elles, les piles et les files sont des structures essentielles, caractérisées par des règles spécifiques d'insertion et de suppression des éléments. Comprendre ces règles est crucial pour bien utiliser ces structures.
Les Piles (LIFO - Last-In, First-Out)
Une pile est une structure de données qui suit le principe LIFO (Last-In, First-Out), ce qui signifie que le dernier élément ajouté à la pile est le premier à être retiré. Imaginez une pile d'assiettes : vous ajoutez une assiette sur le dessus, et lorsque vous voulez en retirer une, vous prenez celle du dessus en premier.
Opérations principales sur une pile :
Exemple concret : L'historique de navigation d'un navigateur web. Chaque fois que vous visitez une nouvelle page, elle est "empilée" en haut de l'historique. Lorsque vous cliquez sur le bouton "Précédent", la dernière page visitée (le sommet de la pile) est "dépilée" et affichée.
Les Files (FIFO - First-In, First-Out)
Une file est une structure de données qui suit le principe FIFO (First-In, First-Out), ce qui signifie que le premier élément ajouté à la file est le premier à être retiré. Imaginez une file d'attente : la première personne à entrer dans la file est la première à être servie.
Opérations principales sur une file :
Exemple concret : Une imprimante qui reçoit des tâches d'impression. Les tâches sont ajoutées à la file d'impression dans l'ordre où elles sont soumises, et l'imprimante les traite dans cet ordre.
Comparaison LIFO vs FIFO
La principale différence entre les piles (LIFO) et les files (FIFO) réside dans l'ordre de traitement des éléments.
Le choix entre une pile et une file dépend donc du problème à résoudre. Voici un tableau comparatif:Caractéristique Pile (LIFO) File (FIFO) Principe Dernier entré, premier sorti Premier entré, premier sorti Opération d'ajout Empiler (Push) Enfiler (Enqueue) Opération de suppression Dépiler (Pop) Défiler (Dequeue) Exemple Historique de navigation File d'impression
Implémentation en Python
En Python, on peut implémenter une pile à l'aide d'une liste. Voici un exemple simple :pile = []
pile.append(1) # Empiler 1
pile.append(2) # Empiler 2
pile.append(3) # Empiler 3
print(pile.pop()) # Dépiler (affiche 3)
print(pile.pop()) # Dépiler (affiche 2)
print(pile.pop()) # Dépiler (affiche 1)
Pour implémenter une file, on peut utiliser la classe `deque` du module `collections` :
La méthode `append` ajoute des éléments, `pop` retire le dernier élément pour les piles et `popleft` retire le premier élément pour les files.from collections import deque
file = deque()
file.append(1) # Enfiler 1
file.append(2) # Enfiler 2
file.append(3) # Enfiler 3
print(file.popleft()) # Défiler (affiche 1)
print(file.popleft()) # Défiler (affiche 2)
print(file.popleft()) # Défiler (affiche 3)
Ce qu'il faut retenir
FAQ
-
Quelle est la différence entre une pile et un tableau (liste en Python)?
Un tableau (ou une liste) permet d'accéder à n'importe quel élément directement grâce à son index. Une pile, en revanche, limite l'accès aux éléments, seul le sommet de la pile est directement accessible. L'accès aux autres éléments nécessite de dépiler les éléments supérieurs. -
Dans quel cas est-il plus judicieux d'utiliser une pile plutôt qu'une file?
Une pile est plus appropriée lorsque l'ordre inverse d'insertion est important, par exemple pour annuler une série d'actions (comme avec Ctrl+Z). Une file est plus appropriée lorsque l'ordre d'arrivée est important, par exemple pour gérer des tâches à exécuter dans l'ordre où elles ont été soumises.