Telechargé par mouhamed6244

Chapitre 11 - Les Piles et les Files

publicité
Chapitre 11 – LES PILES ET LES FILES
1. Les piles
1-1. Présentation
Une pile est une structure de données pour laquelle l'ajout et le retrait d'un élément se fait
toujours par un seul côté appelé sommet (ou tête).
Ajouter un élément à une pile se dit empiler ou push
Retirer un élément d'une pile se dit dépiler ou pop
Une pile suit la règle LIFO (Last In, First Out): le dernier élément ajouté est le premier à être
retiré.
1-2. Implémentation d'une pile
Une pile peut être implémentée sous forme e tableau ou sous forme de liste chaînée. Dans le
dernier cas, le sommet de la pile est la tête de la liste chaînée.
P
sommet
D’où la définition du type Pile, pour des éléments de type entier :
Type
maillon = Structure
valeur : entier
suivant: Pointeur sur maillon
FinStructure
Pile = Pointeur sur maillon
1-4. Algorithmes sur les piles
1-4-1. Ajout d'un élément à une pile
Procédure Empiler( E-S P : Pile , E v : Entier )
Début
Variable
Q : Pile
Q = allouer( 1 , maillon )
Q→valeur = v
Q→suivant = P
P=Q
FinProcédure
Chapitre 11 – Les Piles et les Files
Page 1 / 4
1-4-2. Valeur du sommet d'une pile non vide
Fonction Sommet( P : Pile ) : entier
Début
Retourner P→valeur
FinFonction
1-4-3. Retrait d'un élément d'une pile
Procédure Dépiler( E-S P : Pile )
Début
Variable
Q : Pile
Si ( P != NULL ) Alors
Q=P
P = P→suivant
Désallouer( Q )
FinSi
FinProcédure
// si la pile n'est pas vide
2. Les files
2-1. Présentation
Une file ou queue est une structure de données pour laquelle l'ajout d'un élément se fait à une
extrémité appelée queue et le retrait d'un élément se fait à une autre extrémité appelée tête.
Une file suit la règle FIFO (First In, First Out): le premier élément ajouté sera le premier à être
retiré.
2-2. Implémentation d'une file
Une file peut être implémentée sous forme de tableau ou sous forme de liste doublement
chaînée ou simplement chaînée. Dans le dernier cas, la tête et la queue de la file correspondent
à la tête et à la queue de la liste chaînée.
Une file doit être accessible à la fois par la tête pour retirer un élément (défiler) et par la queue
pour ajouter un nouvel élément (enfiler). Pour cela, on utilise deux pointeurs sur la liste : un
pointeur sur la tête et un pointeur sur la queue.
pqueue
ptete
tete
Chapitre 11 – Les Piles et les Files
queue
Page 2 / 4
D’où la définition du type File, pour des éléments de type entier :
Type
maillon = Structure
valeur : entier
suivant: Pointeur sur maillon
FinStructure
File = Structure
ptete : Pointeur sur maillon
pqueue : Pointeur sur maillon
FinStructure
2-3. Algorithmes sur les files
2-3-1. Ajout d'un élément à une file
Procédure Enfiler( E-S F : File , E v : Entier )
Début
Variable
Q : Pointeur sur maillon
Q = allouer( 1 , maillon )
Q→valeur = v
Q→suivant = NULL
Si ( F.pqueue = = NULL ) Alors
// si la file est vide
F.pqueue = Q
F.ptete = Q
Sinon
(F.pqueue)→suivant = Q
F.pqueue = (F.pqueue)→suivant
FinSi
FinProcédure
2-3-2. Valeur de la tête d'une file non vide
Fonction Tete( F: File ) : entier
Début
Retourner (F.ptete)→valeur
FinFonction
Chapitre 11 – Les Piles et les Files
Page 3 / 4
2-3-3.Retrait d'un élément d'une file
Procédure Défiler( E-S F : File )
Début
Variable
Q : Pointeur sur maillon
Si ( F.ptete != NULL)
// si la file n'est pas vide
Si ( F.ptete = = F.pqueue ) Alors
// si la file contient un seul élément
Désallouer( F.ptete )
F.ptete = NULL
F.pqueue = NULL
Sinon
Q = F.ptete
F.ptete = (F.ptete)→suivant
Désallouer(Q)
FinSi
FinSi
FinProcédure
2-4. Remarque
Une file peut aussi être implémentée sous forme de tableau ou de liste doublement chaînée.
Chapitre 11 – Les Piles et les Files
Page 4 / 4
Téléchargement