0% ont trouvé ce document utile (0 vote)
339 vues81 pages

Files&Piles

Ce document décrit les files et leur implémentation avec un tableau circulaire. Il présente la définition d'une file, ses domaines d'application et les opérations de base comme l'ajout et le retrait d'éléments. Le modèle abstrait d'une file et son implémentation avec un tableau sont également détaillés.

Transféré par

Obama
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
339 vues81 pages

Files&Piles

Ce document décrit les files et leur implémentation avec un tableau circulaire. Il présente la définition d'une file, ses domaines d'application et les opérations de base comme l'ajout et le retrait d'éléments. Le modèle abstrait d'une file et son implémentation avec un tableau sont également détaillés.

Transféré par

Obama
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

Ecole Supérieure en Sciences et Technologies

de l’Informatique et du Numérique

Chapitre II: Les Files et Les Piles

Algorithmique et Structures de
Données Dynamiques

1re année Ecole Prépa. De l’ESTIN de Bejaia

Année: 2020-2021
Chapitre II: Les Files et Les Piles
Les Files

 Définition :

Une file est une structures de données définie comme une collection
d’éléments dans laquelle tout nouvel élément est inséré à la fin et un
élément ne peut être supprimé que du début de la liste. Règle du
premier arrivé premier sorti(Servi), ou encore FIFO (First In First Out).

2
Chapitre II: Les Files et Les Piles
Les Files
 Domaine d’application :
Les files sont utilisées aussi bien dans la vie courante que dans les
systèmes informatiques. Par exemple, elle modélise la file d’attente
des clients devant un guichet. On retrouve également les files d’attente
dans les programmes de traitement de transactions telle que les
réservations.

Les files sont très utilisées aussi dans les systèmes d'exploitation des
ordinateurs (gestion de processeur, gestion de la mémoire, …).
Nous verrons également que les files peuvent être utilisées pour le parcours
des arbres et pour résoudre tant d'autres problèmes.

3
Chapitre II: Les Files et Les Piles
Les Files
 Ajout de nouveaux éléments à la file

e1 e2 e3 e4 Nil

Ajout en
queue de
Tête Queue
liste

x
 Suppression d’éléments de la file

e1 e2 e3 e4 Nil

Suppression
Tête Queue
en tête de
liste

4
Chapitre II: Les Files et Les Piles
Les Files

 Modèle :
Le modèle abstrait pour les files inclue l'ensemble des opérations de
gestion des files, définies comme suit :

— CréerFile(F) : créer une file vide.


— Enfiler(F, Val): ajouter val en queue de la file.
— Défiler(F, Val): retirer dans val l’élément en tête de file.
— FileVide(F): vérifier si la file est vide.
— FilePleine(F): vérifier si la file est pleine.

5
Chapitre II: Les Files et Les Piles
Les Files

 Implémentation :

Une file peut être implémentée par une liste chaînée, ou par un
tableau avec une gestion circulaire. Cependant la gestion par
tableaux présente l’inconvénient que la file a une capacité
limitée, contrairement à la gestion par listes chaînées.

6
Chapitre II: Les Files et Les Piles
Les Files
 implémentation :
 Par Tableau circulaires :
 À l'initialisation : Tête = Queue = 0
Max = 4
 Opérations :
1 2 3 4
Enfiler(5)
Enfiler(3)
Enfiler(-1)
Enfiler(10) Tête Queue

7
Chapitre II: Les Files et Les Piles
Les Files
 implémentation :
 Par Tableau circulaires :
 À l'initialisation : Tête = Queue = 0
Max = 4
 Opérations :
1 2 3 4
Enfiler(5)
Enfiler(3) 5
Enfiler(-1)
Enfiler(10) Tête Queue
Tête ← Tête +1
Queue ← Queue +1

8
Chapitre II: Les Files et Les Piles
Les Files
 implémentation :
 Par Tableau circulaires :
 À l'initialisation : Tête = Queue = 0
Max = 4
 Opérations :
1 2 3 4
Enfiler(5)
Enfiler(3) 5 3
Enfiler(-1)
Enfiler(10) Tête Queue
Queue ← Queue +1

9
Chapitre II: Les Files et Les Piles
Les Files
 implémentation :
 Par Tableau circulaires :
 À l'initialisation : Tête = Queue = 0
Max = 4
 Opérations :
1 2 3 4
Enfiler(5)
Enfiler(3) 5 3 -1
Enfiler(-1)
Enfiler(10) Tête Queue
Queue ← Queue +1

10
Chapitre II: Les Files et Les Piles
Les Files
 implémentation :
 Par Tableau circulaires :
 À l'initialisation : Tête = Queue = 0
Max = 4
 Opérations :
1 2 3 4
Enfiler(5)
Enfiler(3) 5 3 -1 10
Enfiler(-1)
Enfiler(10) Tête Queue
Queue ← Queue +1

Queue = Max => File pleine, on ne peut plus insérer des éléments

11
Chapitre II: Les Files et Les Piles
Les Files
 implémentation :
 Par Tableau circulaires :
 À l'initialisation : Tête = Queue = 0
Max = 4
 Opérations :
1 2 3 4
Enfiler(5)
Enfiler(3) 5 3 -1 10
Enfiler(-1)
Enfiler(10) Tête Tête Queue
Défiler() Tête ← Tête +1
Défiler()

12
Chapitre II: Les Files et Les Piles
Les Files
 implémentation :
 Par Tableau circulaires :
 À l'initialisation : Tête = Queue = 0
Max = 4
 Opérations :
1 2 3 4
Enfiler(5)
Enfiler(3) 5 3 -1 10
Enfiler(-1)
Enfiler(10) Tête Tête Queue
Défiler() Tête ← Tête +1
Défiler()

13
Chapitre II: Les Files et Les Piles
Les Files
 implémentation :
 Par Tableau circulaires :
 À l'initialisation : Tête = Queue = 0
Max = 4
 Opérations :
1 2 3 4
Enfiler(5)
Enfiler(3) 5 3 -1 10
Enfiler(-1)
Enfiler(10) Tête Queue
Défiler()
Défiler()

Comment réutiliser les cases des éléments défilés ?

14
Chapitre II: Les Files et Les Piles
Les Files
 implémentation :
 Par Tableau circulaires :
 À l'initialisation : Tête = Queue = 0
Max = 4
 Opérations :
1 2 3 4
Enfiler(5)
Enfiler(3) 5 3 -1 10
Enfiler(-1)
Enfiler(10) Tête Queue
Défiler() Queue  (Queue mod Max) +1
Défiler()
Tête  (Tête mod Max) +1
Comment Savoir si la file est pleine ?
 Tête = (Queue mod Max) + 1
15
Chapitre II: Les Files et Les Piles
Les Files
 implémentation :
 Par Tableau circulaires :
{Déclaration}
Const Max = 100
Type File = Structure
Elements : tableau[1..Max] de Typeqq
Tête, Queue: Entier
Fin Structure
Var F : File

— Exercice d’application : en se basant sur cette déclaration,


définissez les primitives du modèle abstrait (CréerFile(F),
FileVide(F), FilePleine(F), Enfiler(F, Val) et Défiler(F, Val)).
16
Chapitre II: Les Files et Les Piles
Les Files
 implémentation :
 Par Tableau circulaires :
{Création d’une file (initialisation)}

Procédure CréerFile(Var F : File)


Début
F.Tête ← 0
F.Queue ← 0
Fin

17
Chapitre II: Les Files et Les Piles
Les Files
 implémentation :
 Par Tableau circulaires :
{Vérification File vide}
Fonction FileVide( F :File) : Booléen
Début
Si (F.Tête = 0) Et (F.Queue = 0) Alors
FileVide ← Vrai
Sinon
FileVide ← Faux
FinSi
Fin

18
Chapitre II: Les Files et Les Piles
Les Files
 implémentation :
 Par Tableau circulaires :
{Vérification File pleine}
Fonction FilePleine(F :File) : Booléen
Début
{Si la Queue précède la Tête}
Si (F.Tête = (F.Queue Mod Max) +1) Alors
FilePleine ← Vrai
Sinon
FilePleine ← Faux
FinSi
Fin

19
Chapitre II: Les Files et Les Piles
Les Files
 implémentation :
 Par Tableau circulaires :
{Insertion d’un nouvel élément dans la file}
Procedure Enfiler(Var F : File ; V : Typeqq)
Début
Si non FilePleine(F) Alors
Si FileVide(F) Alors
F.Tête ← 1
F.Queue ← 1
Sinon
F.Queue ←(F.Queue Mod Max) +1
Finsi
F.Elements[F.Queue] ← V
Sinon
Ecrire (‘La file est pleine’)
Finsi
Fin 20
Chapitre II: Les Files et Les Piles
Les Files
 implémentation :
 Par Tableau circulaires :
{Retrait d’un élément de la file}
Procedure Défiler(Var F : File ; Var V : Typeqq)
Début
Si non FileVide(F) Alors
V ← F.Elements[F.Tête]
Si F.Tête = F.Queue Alors
F.Tête ← 0
F.Queue ← 0
Sinon
F.Tête ← (F.Tête Mod Max) +1
FinSi
Sinon
Ecrire (‘La file est vide’)
FinSi
Fin 21
Chapitre II: Les Files et Les Piles
Les Files
 Implémentation :
 Par Liste chainée :
{Déclaration}
Type
Element = Structure
Val : Typeqq
Suiv: Pointeur(Element)
Fin Structure
File = Structure
Tête, Queue: Pointeur(Element)
Fin Structure
Var F : File
— Exercice d’application : en se basant sur cette déclaration,
définissez les primitives du modèle abstrait (CréerFile(F),
FileVide(F), Enfiler(F, Val) et Défiler(F, Val)).
22
Chapitre II: Les Files et Les Piles
Les Files
 Implémentation :
 Par Liste chainée :
{Création d’une file (initialisation)}

Procédure CréerFile(Var F : File)


Début
F.Tête ← Nil
F.Queue ← Nil
Fin

23
Chapitre II: Les Files et Les Piles
Les Files
 Implémentation :
 Par Liste chainée :
{Vérification File vide}
Fonction FileVide( F :File) : Booléen
Début
Si (F.Tête = Nil) Alors
FileVide ← Vrai
Sinon
FileVide ← Faux
FinSi
Fin

24
Chapitre II: Les Files et Les Piles
Les Files
 Implémentation :
 Par Liste chainée :
{Insertion d’un nouvel élément dans la file}
Procedure Enfiler(Var F : File ; X : Typeqq)
Var Q: Pointeur(Element)
Début
Allouer(Q)
Q.Val ← X
Q.Suiv ← Nil
Si Non (FileVide(F)) Alors
F.Queue.Suiv ← Q
Sinon
F.Tête ← Q
Finsi
F.Queue ← Q
Fin
25
Chapitre II: Les Files et Les Piles
Les Files
 Implémentation :
 Par Liste chainée :
{Retrait d’un élément de la file}
Procedure Défiler(Var F : File ; Var X : Typeqq)
Var P: Pointeur(Element)
Début
Si Non (FileVide(F)) Alors
P ← F.Tête
X ← F.Tête.Val
F.Tête ← F.Tête.Suiv
Libérer(P)
Sinon
Ecrire(" la liste est vide ")
Finsi
Fin

26
Chapitre II: Les Files et Les Piles
Les Files
 Exercice 1 :
Soit F une file de d’entier. Que serait il le contenu de la file
à la fin d’exécution de ces primitives?
CréerFile(F)
Enfiler(F,5)
Enfiler(F,-1)
Enfiler(F,4)
Défiler(F,E1)
Défiler(F,E2)
Enfiler(F,10)
27
Chapitre II: Les Files et Les Piles
Les Files
 Solution :
CréerFile(F)
Enfiler(F,5)
Enfiler(F,-1)
Enfiler(F,4)
Défiler(F,E1)
Défiler(F,E2)
Enfiler(F,10)

28
Chapitre II: Les Files et Les Piles
Les Files
 Solution :
CréerFile(F)
Enfiler(F,5) T, Q
Enfiler(F,-1)
Enfiler(F,4)
Défiler(F,E1)
Défiler(F,E2)
Enfiler(F,10)

29
Chapitre II: Les Files et Les Piles
Les Files
 Solution :
CréerFile (F)
Enfiler(F,5) T, Q
Enfiler(F,-1) Q
T
Enfiler(F,4)
Défiler(F,E1)
Défiler(F,E2)
Enfiler(F,10)

30
Chapitre II: Les Files et Les Piles
Les Files
 Solution :
CréerFile(F)
Enfiler(F,5) T, Q
Enfiler(F,-1) Q
T
Enfiler(F,4)
T Q
Défiler(F,E1)
Défiler(F,E2)
Enfiler(F,10)

31
Chapitre II: Les Files et Les Piles
Les Files
 Solution :
CréerFile(F)
Enfiler(F,5) T, Q
Enfiler(F,-1) Q
T
Enfiler(F,4)
T Q
Défiler(F,E1) E1 = 5
T Q
Défiler(F,E2)
Enfiler(F,10)

32
Chapitre II: Les Files et Les Piles
Les Files
 Solution :
CréerFile(F)
Enfiler(F,5) T, Q
Enfiler(F,-1) Q
T
Enfiler(F,4)
T Q
Défiler(F,E1) E1 = 5
T Q
Défiler(F,E2) E2 = -1
T Q
Enfiler(F,10)

33
Chapitre II: Les Files et Les Piles
Les Files
 Solution :
CréerFile(F)
Enfiler(F,5) T, Q
Enfiler(F,-1) Q
T
Enfiler(F,4)
T Q
Défiler(F,E1) E1 = 5
T Q
Défiler(F,E2) E2 = -1
T Q
Enfiler(F,10)
T Q

34
Chapitre II: Les Files et Les Piles
Les Files
 Exercice 2 :

Soit F une file de caractères alphanumériques, écrivez un


algorithme permettant d’éclater la file F en deux autres files
FL et FC, tel que :
 FL : File de caractères alphabétiques
 FC : File de caractères numériques

35
Chapitre II: Les Files et Les Piles
Les Files
 Solution :
Algorithme File_Caractères
Type
Element = Structure
Val : Caractère
Suiv : Pointeur(Element)
Fin Structure

File = Structure
Tête, Queue : Pointeur(Element)
Fin Structure

Var F, FL, FC : File


V: Caractère
36
Chapitre II: Les Files et Les Piles
Les Files
 Solution :
Début
{Création de la file de caractères}
CréerFile(F)
Repeter
Ecrire( "Introduire un caractère ")
Lire(V)
V ← UpCase(V)
Si (V Dans [‘A’ .. ‘Z’]) OR (V Dans [0 .. 9] ) Alors
Enfiler(F, V)
Ecrire( " Voulez vous saisir d’autres éléments ? Tapez 1 si oui " )
Lire(Rép)
Jusqu’à (Rep ≠ 1)
Fin
37
Chapitre II: Les Files et Les Piles
Les Files
 Solution :
Début
{Eclatement de la file F en file de lettres et file de chiffres}
CréerFile(FL)
CréerFile(FC)
TantQue Non (FileVide(F)) Faire
Défiler(F, V)
Si V dans [‘A’ .. ‘Z’] Alors
Enfiler(FL, V)
Sinon
Enfiler(FC, V)
FinSi
FinTantQue
Fin 38
Chapitre II: Les Files et Les Piles
Les Files
 Exercice 3:

Ecrire un algorithme qui permet de :


— Créer une file F d’entiers au moyen des LLC,
— Afficher les éléments de la file F,

39
Chapitre II: Les Files et Les Piles
Les Files
 Solution : Algorithme File_Entier
Type
Element = Structure
Val : Entier
Suiv : Pointeur(Element)
Fin Structure

File = Structure
Tête, Queue : Pointeur(Element)
Fin Structure

Var F : File

40
Chapitre II: Les Files et Les Piles
Les Files
 Solution :
Procedure Remplir(Var F: File)
Var V, Rep: Entier

Debut
CréerFile(F) {Création de la file d’entiers}
Repeter
Ecrire( "Introduire un entier ")
Lire(V)
Enfiler(F, V)
Ecrire( " Voulez vous saisir d’autres éléments ? Tapez 1 si oui " )
Lire(Rep)
Jusqu’à (Rep ≠ 1)
Fin
41
Chapitre II: Les Files et Les Piles
Les Files
 Solution :
Procedure Afficher(F: File)
Var F1: File
Début
CréerFile(F1)
{Affichage des éléments de la file}
TantQue Non (FileVide(F)) Faire
Défiler(F, V)
Ecrire( V, " - " )
Enfiler(F1,V)
FinTantQue
….

42
Chapitre II: Les Files et Les Piles
Les Files
 Solution :

TantQue Non (FileVide(F1)) Faire
Défiler(F1, V)
Enfiler(F,V)
FinTantQue
Fin

Début {Programme principal}


Remplir(F)
Afficher(F)
Fin
43
Chapitre II: Les Files et Les Piles
Les Piles

 Définition :

Une Pile est une structures de données définie comme une collection
d’éléments dans laquelle tout élément ne peut être inséré ni supprimé
que d’une seule extrémité (Sommet). Règle du dernier arrivé premier
sorti(Servi), ou encore LIFO (Last In First Out).

44
Chapitre II: Les Files et Les Piles
Les Piles
 Domaine d’application :

La pile constitue l'un des concepts les plus utilisés dans la science des
ordinateurs.

La pile est très utilisée dans le domaine de la compilation : Appels


récursifs, évaluation d'expressions, etc..

Nous verrons également que les Piles peuvent être utilisées pour le
parcours des arbres et pour résoudre tant d'autres problèmes.

45
Chapitre II: Les Files et Les Piles
Les Piles
 Ajout de nouveaux éléments à la pile

e4 e3 e2 e1 Nil

Ajout au
Sommet
sommet de
la pile

 Suppression d’éléments de la pile

Suppression
x
e4

Sommet
e3

Sommet
e2 e1 Nil

de sommet
de la pile
46
Chapitre II: Les Files et Les Piles
Les Piles

 Modèle :
Le modèle abstrait pour la gestion des piles inclue l'ensemble des
opérations suivantes:

— CréerPile(P) : créer une pile vide.


— Empiler(P, Val): ajouter val au sommet de la pile.
— Dépiler(P, Val): retirer dans val l’élément en sommet de la pile.
— PileVide(P): vérifier si la pile est vide.
— PilePleine(P): vérifier si la pile est pleine.

47
Chapitre II: Les Files et Les Piles
Les Piles

 Implémentation :

Une pile peut être implémentée par une liste chaînée, ou par un
tableau. Cependant, de même que pour les cas des files, la
gestion par tableaux présente l’inconvénient que la pile a une
capacité limitée, contrairement à la gestion par listes chaînées.

48
Chapitre II: Les Files et Les Piles
Les Piles
 Implémentation :
 Au moyen d’un tableau :
 À l'initialisation : Sommet = 0
Max = 4
 Opérations :
Empiler(5) 1 2 3 4
Empiler(3)
Empiler(-1)
Empiler(10) Sommet

49
Chapitre II: Les Files et Les Piles
Les Piles
 Implémentation :
 Au moyen d’un tableau :
 À l'initialisation : Sommet = 0
Max = 4
 Opérations :
Empiler(5) 1 2 3 4
Empiler(3) 5
Empiler(-1)
Empiler(10) Sommet
Sommet ← Sommet +1

50
Chapitre II: Les Files et Les Piles
Les Piles
 Implémentation :
 Au moyen d’un tableau :
 À l'initialisation : Sommet = 0
Max = 4
 Opérations :
Empiler(5) 1 2 3 4
Empiler(3) 5 3
Empiler(-1)
Empiler(10) Sommet
Sommet ← Sommet +1

51
Chapitre II: Les Files et Les Piles
Les Piles
 Implémentation :
 Au moyen d’un tableau :
 À l'initialisation : Sommet = 0
Max = 4
 Opérations :
Empiler(5) 1 2 3 4
Empiler(3) 5 3 -1
Empiler(-1)
Empiler(10) Sommet
Sommet ← Sommet +1

52
Chapitre II: Les Files et Les Piles
Les Piles
 Implémentation :
 Au moyen d’un tableau :
 À l'initialisation : Sommet = 0
Max = 4
 Opérations :
Empiler(5) 1 2 3 4
Empiler(3) 5 3 -1 10
Empiler(-1)
Empiler(10) Sommet
Sommet ← Sommet +1

Sommet = Max => Pile pleine, on ne peut plus insérer des éléments

53
Chapitre II: Les Files et Les Piles
Les Piles
 Implémentation :
 Au moyen d’un tableau :
 À l'initialisation : Sommet = 0
Max = 4
 Opérations :
Empiler(5) 1 2 3 4
Empiler(3) 5 3 -1 10
Empiler(-1)
Empiler(10) Sommet
Dépiler() Sommet ← Sommet - 1
Dépiler(10)

54
Chapitre II: Les Files et Les Piles
Les Piles
 Implémentation :
 Au moyen d’un tableau :
 À l'initialisation : Sommet = 0
Max = 4
 Opérations :
Empiler(5) 1 2 3 4
Empiler(3) 5 3 -1 10
Empiler(-1)
Empiler(10) Sommet
Dépiler() Sommet ← Sommet - 1
Dépiler()

55
Chapitre II: Les Files et Les Piles
Les Piles
 Implémentation :
 Au moyen d’un tableau :
{Déclaration}
Const Max = 100
Type Pile = Structure
Elements : tableau[1..Max] de Typeqq
Sommet: Entier
Fin Structure
Var P : Pile

— Exercice d’application : en se basant sur cette déclaration,


définissez les primitives du modèle abstrait (CréerPile(P),
PileVide(P), PilePleine(P), Empiler(P, Val) et Dépiler(P, Val)).
56
Chapitre II: Les Files et Les Piles
Les Piles
 Implémentation :
 Au moyen d’un tableau :
{Création d’une pile (initialisation)}

Procédure CréerPile(Var P : Pile)

Début
P.Sommet ← 0
Fin

57
Chapitre II: Les Files et Les Piles
Les Piles
 Implémentation :
 Au moyen d’un tableau :
{Vérification Pile vide}
Fonction PileVide( P :Pile) : Booléen
Début
Si (P. Sommet = 0) Alors
PileVide ← Vrai
Sinon
PileVide ← Faux
FinSi
Fin

58
Chapitre II: Les Files et Les Piles
Les Piles
 Implémentation :
 Au moyen d’un tableau :
{Vérification Pile pleine}
Fonction PilePleine(P :Pile) : Booléen
Début
{Si Sommet = taille maximale du tableau}
Si (P.Sommet = Max) Alors
PilePleine ← Vrai
Sinon
PilePleine ← Faux
FinSi
Fin

59
Chapitre II: Les Files et Les Piles
Les Piles
 Implémentation :
 Au moyen d’un tableau :
{Insertion d’un nouvel élément dans la pile}
Procedure Empiler(Var P : Pile ; V : Typeqq)

Début
Si non PilePleine(P) Alors
P.Sommet ←P.Sommet + 1
P.Elements[P.Sommet] ← V
Sinon
Ecrire (‘La pile est pleine’)
Finsi
Fin

60
Chapitre II: Les Files et Les Piles
Les Piles
 Implémentation :
 Au moyen d’un tableau :
{Retrait d’un élément de la pile}
Procedure Dépiler(Var P : Pile ; Var V : Typeqq)
Début
Si non PileVide(P) Alors
V ← P.Elements[P.Sommet]
P.Sommet ← P.Sommet - 1
Sinon
Ecrire (‘La Pile est vide’)
FinSi
Fin

61
Chapitre II: Les Files et Les Piles
Les Piles
 Implémentation :
 Au moyen d’une liste chainée :
{Déclaration}
Type
Element = Structure
Val : Typeqq
Suiv: Pointeur(Element)
Fin Structure
File = Structure
Sommet: Pointeur(Element)
Fin Structure
Var P : Pile
— Exercice d’application : en se basant sur cette déclaration,
définissez les primitives du modèle abstrait (CréerPile(P),
PileVide(P), Empiler(P, Val) et Dépiler(P, Val)).
62
Chapitre II: Les Files et Les Piles
Les Piles
 Implémentation :
 Au moyen d’une liste chainée :
{Création d’une pile (initialisation)}

Procédure CréerPile(Var P : Pile)

Début
P.Sommet ← Nil
Fin

63
Chapitre II: Les Files et Les Piles
Les Piles
 Implémentation :
 Au moyen d’une liste chainée :
{Vérification Pile vide}
Fonction PileVide( P : Pile) : Booléen
Début
Si (P.Sommet = Nil) Alors
PileVide ← Vrai
Sinon
PileVide ← Faux
FinSi
Fin

64
Chapitre II: Les Files et Les Piles
Les Piles
 Implémentation :
 Au moyen d’une liste chainée :
{Insertion d’un nouvel élément dans la pile}

Procedure Empiler(Var P : Pile ; X : Typeqq)


Var Q: Pointeur(Element)
Début Note :
Allouer(Q) L‘ajout d’une valeur à
Q.Val ← X une pile dynamique
Q.Suiv ← P.Sommet revient à une insertion
P.Sommet ← Q en début de liste si l’on
Fin considère que le
sommet est la tête de
la liste. 65
Chapitre II: Les Files et Les Piles
Les Piles
 Implémentation :
 Au moyen d’une liste chainée :
{Retrait d’un élément de la pile}
Procedure Dépiler(Var P : Pile ; Var X : Typeqq)
Var Q: Pointeur(Element)
Début
Si Non (PileVide(P)) Alors
Q ← P.Sommet
X ← P.Sommet.Val
P.Sommet ← P.Sommet.Suiv
Libérer(P)
Sinon
Ecrire(" la pile est vide ")
Finsi
Fin

66
Chapitre II: Les Files et Les Piles
Les Piles
 Exercice 1 :
Soit P une pile d’entier. Que serait il le contenu de la pile à
la fin d’exécution de ces primitives? CréerPile(P)
Empiler(P,5)
Empiler(P,-1)
Empiler(P,4)
Dépiler(P,E1)
Dépiler(P,E2)
Empiler(P,10)

67
Chapitre II: Les Files et Les Piles
Les Piles
 Solution :
CréerPile(P)
Empiler(P,5)
Empiler(P,-1)
Empiler(P,4)
Dépiler(P,E1)
Dépiler(P,E2)
Empiler(P,10)

68
Chapitre II: Les Files et Les Piles
Les Piles
 Solution :
CréerPile(P)
Empiler(P,5)
Empiler(P,-1)
Empiler(P,4)
Dépiler(P,E1)
Dépiler(P,E2)
Empiler(P,10)

69
Chapitre II: Les Files et Les Piles
Les Piles
 Solution :
CréerPile(P)
Empiler(P,5)
Empiler(P,-1)
Empiler(P,4)
Dépiler(P,E1)
Dépiler(P,E2)
Empiler(P,10)

70
Chapitre II: Les Files et Les Piles
Les Piles
 Solution :
CréerPile(P)
Empiler(P,5)
Empiler(P,-1)
Empiler(P,4)
Dépiler(P,E1)
Dépiler(P,E2)
Empiler(P,10)

71
Chapitre II: Les Files et Les Piles
Les Piles
 Solution :
CréerPile(P)
Empiler(P,5)
Empiler(P,-1)
Empiler(P,4)
Dépiler(P,E1)
E1 = 4
Dépiler(P,E2)
Empiler(P,10)

72
Chapitre II: Les Files et Les Piles
Les Piles
 Solution :
CréerPile(P)
Empiler(P,5)
Empiler(P,-1)
Empiler(P,4)
Dépiler(P,E1) E1 = 4
Dépiler(P,E2)
E2 = -1
Empiler(P,10)

73
Chapitre II: Les Files et Les Piles
Les Piles
 Solution :
CréerPile(P)
Empiler(P,5)
Empiler(P,-1)
Empiler(P,4)
Dépiler(P,E1) E1 = 4
Dépiler(P,E2) E2 = -1
Empiler(P,10)

74
Chapitre II: Les Files et Les Piles
Les Piles
 Exercice 2 :

Soit P une Pile de réels, écrivez une procédure permettant


d’inverser la pile P.

75
Chapitre II: Les Files et Les Piles
Les Piles
 Exercice 2 :
Pour inverser la pile P on peu se servir d’une file où l’on enfile ce qui a été
dépilé puis on empile à partir de la file, les éléments seront installés dans
l’ordre inverse.
Procedure inver (Var P : Pile)
Var X: Reel Tantque Non (PileVide (F)) Faire
F: File
Debut Defiler(F, X) ;
CréerFile(F) Empiler(P, X)
Tantque Non(PileVide (P)) Faire
Depiler(P, X) FinTantque
Enfiler(F, X)
FinTantque

76
Chapitre II: Les Files et Les Piles
Les Piles
 Exercice 3:

Ecrire un algorithme qui permet de :


— Créer une Pile P d’entiers au moyen d’une LLC,
— Afficher les éléments de la file P,

77
Chapitre II: Les Files et Les Piles
Les Piles
 Solution : Algorithme Pile_Entier
Type
Element = Structure
Val : Entier
Suiv : Pointeur(Element)
Fin Structure

File = Structure
Sommet : Pointeur(Element)
Fin Structure

Var P : Pile

78
Chapitre II: Les Files et Les Piles
Les Piles
 Solution :
Procedure Remplir(Var P: Pile)
Var V, Rep: Entier

Debut
CréerPile(P) {Création de la pile d’entiers}
Repeter
Ecrire( "Introduire un entier ")
Lire(V)
Empiler(P, V)
Ecrire( " Voulez vous saisir d’autres éléments ? Tapez 1 si oui " )
Lire(Rep)
Jusqu’à (Rep ≠ 1)
Fin
79
Chapitre II: Les Files et Les Piles
Les Piles
 Solution :
Procedure Afficher(P: Pile)
Var P1: Pile
Début
CréerPile(P1)
{Affichage des éléments de la pile}
TantQue Non (PileVide(P)) Faire
Dépiler(P, V)
Ecrire( V, " - " )
Empiler(P1,V)
FinTantQue
….

80
Chapitre II: Les Files et Les Piles
Les Piles
 Solution :

TantQue Non (PileVide(P1)) Faire
Dépiler(P1, V)
Empiler(P,V)
FinTantQue
Fin

Début {Programme principal}


Remplir(P)
Afficher(P)
Fin

81

Vous aimerez peut-être aussi