Vous êtes sur la page 1sur 5

Les piles et les files

I. Les piles
1. Définition
Une pile est un ensemble d’éléments de même type où l’insertion et la suppression se font de
la même extrémité qu’on appelle sommet de la pile. (LIFO)
Exemples : pile d’assiettes, les processeurs des ordinateurs gèrent un système de piles pour
fonctionner, mémoriser les pages visitées dans un navigateur web, le bouton annuler la frappe
(ctrl+Z), …

Les opérations permises sur une pile :

• Initialiser-pile
• Pile-vide ou pleine
• Empiler
• Dépiler
• Sommet
Deux modes d’implémentations :

• Statique avec des tableaux : un tableau de taille suffisante , vérifier si la pile est
pleine ou pas
• Dynamique avec les listes simplement chainées
Type
element : enregistrement
info :entier
suiv :pointeur sur element
fin enregistrement
pile : pointeur sur element
Var
p: pile
procedure initialiser (var p : pile)
debut
p←NULL
fin
fonction pile-vide (p:pile) : booleén
debut
si p = NULL alors
retourner vrai
sinon
retourner faux
fin si
fin
procédure Empiler (var p : pile, x :entier)
var
Q :pointeur sur element
Debut
Allouer(Q)
Q → info ← x
Q → suiv ← p
p←Q
Fin
Procédure Dépiler (var p : pile, var x : entier)
var
Q :pointeur sur element
Debut
Q←p
X ← p → info
p ← p → suiv
liberer(Q)
Fin
Fonction Sommet (p :pile) : entier
Debut
Si (pile-vide(p)=Faux) alors
Retourner (p→info)
Sinon
Retourner val erreur
Fin
Debut
Initialiser(p)
Lire(N)
Pour i de 1 à N faire
Lire(x)
Empiler(p,x)
Fin pour
Fin
II. Les files
1. Définition
Une file est une structure qui permet de stocker des éléments dans un ordre donné et les
retirer dans le même ordre (FIFO). Elles servent à traiter les données dans l’ordre dans lequel
elles arrivent (les mécanismes d’attente)
Exemple : queue d’attente, systèmes d’impression, mécanismes d’ordonnancement des
systèmes d’exploitation pour gérer les processus, les mémoires temporelles (buffer), …

Type
element : enregistrement
info :entier
suiv :pointeur sur element
fin enregistrement
file : enregistrment
tete, queue : pointeur sur element
fin enregistrement
Var
f: file
procedure initialiser (var f : file)
debut
f.tete ←NULL
f.queue ←NULL
fin
fonction file-vide (f:file) : booleén
debut
si f.tete = NULL alors
retourner vrai
sinon
retourner faux
fin si
fin
procédure Enfiler (var f : file, x :entier)
var
Q :pointeur sur element
Debut
Allouer(Q)
Q → info ← x
Q → suiv ← NULL
Si f.tete = NULL alors
f.tete ←Q
f.queue ← Q
Sinon
f.queue→ suiv ← Q
f.queue ← Q
Fin si
Fin
procédure défiler (var f : file, x :entier)
var
Q :pointeur sur element
Debut
Q ←f.tete
X ← Q → info
Si f.tete → suiv = NULL alors
f.tete ←NULL
f.queue ← NULL
Sinon
f.tete ← f.tete → suiv
Fin si
Libérer(Q)
Fin
Exemple :
Ecrire un algorithme qui permet d’afficher les éléments d’une liste simplement chainée dans
l’ordre inverse en utilisant une pile.
Initialiser(p)
q←l
tant que q ≠ NULL faire
enfiler(p,q→info)
q ← q→suiv
fin tant que
tant que est-vide(p) ≠ vrai faire
dépiler(p,x)
écrire(x)
fin tant que

Vous aimerez peut-être aussi