structures de données, ima s6laure.gonnord.org/pro/teaching/sd1011/piles_et_files.pdfi on choisit...

22
Structures de données, IMA S6 Piles et Files Laure Gonnord Université Lille 1 - Polytech Lille Février 2011

Upload: others

Post on 05-Sep-2020

1 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Structures de données, IMA S6laure.gonnord.org/pro/teaching/SD1011/Piles_et_Files.pdfI On choisit une SD en fonction de l’application. Dans ce cours on va voir lespileset lesfiles(variantes

Structures de données, IMA S6Piles et Files

Laure Gonnordhttp://laure.gonnord.org/pro/teaching/

[email protected]

Université Lille 1 - Polytech Lille

Février 2011

Page 2: Structures de données, IMA S6laure.gonnord.org/pro/teaching/SD1011/Piles_et_Files.pdfI On choisit une SD en fonction de l’application. Dans ce cours on va voir lespileset lesfiles(variantes

Plan

1 Piles

2 Files

Laure Gonnord (Lille1/Polytech’Lille) Structures de données IMA S6 Piles et Files Février 2011 � 2 / 18 �

Page 3: Structures de données, IMA S6laure.gonnord.org/pro/teaching/SD1011/Piles_et_Files.pdfI On choisit une SD en fonction de l’application. Dans ce cours on va voir lespileset lesfiles(variantes

Plan

Introduction

Jusqu’à présent, on a vu :Les listes contiguës (tableaux).Les listes chaînées simples, doublement chaînées . . .

I Chacune de ces SD effectue un compromis (complexité desopérations, temps, mémoire)I On choisit une SD en fonction de l’application.

Dans ce cours on va voir les piles et les files (variantes deslistes chaînées).

Laure Gonnord (Lille1/Polytech’Lille) Structures de données IMA S6 Piles et Files Février 2011 � 3 / 18 �

Page 4: Structures de données, IMA S6laure.gonnord.org/pro/teaching/SD1011/Piles_et_Files.pdfI On choisit une SD en fonction de l’application. Dans ce cours on va voir lespileset lesfiles(variantes

Piles

1 Piles

2 Files

Laure Gonnord (Lille1/Polytech’Lille) Structures de données IMA S6 Piles et Files Février 2011 � 4 / 18 �

Page 5: Structures de données, IMA S6laure.gonnord.org/pro/teaching/SD1011/Piles_et_Files.pdfI On choisit une SD en fonction de l’application. Dans ce cours on va voir lespileset lesfiles(variantes

Piles

Les piles, pourquoi ?

Exemples d’utilisation :pour modéliser des piles (de cartes, de papiers, . . . )pour faire des recherches de chemin (labyrinthe, . . . )pour gérer la récursivité (cf cours précédent).

I Toutes les fois où l’information importante est la dernièrerangée (ou l’avant dernière, ou . . . )

Laure Gonnord (Lille1/Polytech’Lille) Structures de données IMA S6 Piles et Files Février 2011 � 5 / 18 �

Page 6: Structures de données, IMA S6laure.gonnord.org/pro/teaching/SD1011/Piles_et_Files.pdfI On choisit une SD en fonction de l’application. Dans ce cours on va voir lespileset lesfiles(variantes

Piles

Dessin !Last In First Out (LIFO)

I La dernière information rangée est la première disponibleLaure Gonnord (Lille1/Polytech’Lille) Structures de données IMA S6 Piles et Files Février 2011 � 6 / 18 �

Page 7: Structures de données, IMA S6laure.gonnord.org/pro/teaching/SD1011/Piles_et_Files.pdfI On choisit une SD en fonction de l’application. Dans ce cours on va voir lespileset lesfiles(variantes

Piles

Dessin !Last In First Out (LIFO)

tête

I La dernière information rangée est la première disponibleLaure Gonnord (Lille1/Polytech’Lille) Structures de données IMA S6 Piles et Files Février 2011 � 6 / 18 �

Page 8: Structures de données, IMA S6laure.gonnord.org/pro/teaching/SD1011/Piles_et_Files.pdfI On choisit une SD en fonction de l’application. Dans ce cours on va voir lespileset lesfiles(variantes

Piles

Dessin !Last In First Out (LIFO)

empiler

I La dernière information rangée est la première disponibleLaure Gonnord (Lille1/Polytech’Lille) Structures de données IMA S6 Piles et Files Février 2011 � 6 / 18 �

Page 9: Structures de données, IMA S6laure.gonnord.org/pro/teaching/SD1011/Piles_et_Files.pdfI On choisit une SD en fonction de l’application. Dans ce cours on va voir lespileset lesfiles(variantes

Piles

Dessin !Last In First Out (LIFO)

tête

I La dernière information rangée est la première disponibleLaure Gonnord (Lille1/Polytech’Lille) Structures de données IMA S6 Piles et Files Février 2011 � 6 / 18 �

Page 10: Structures de données, IMA S6laure.gonnord.org/pro/teaching/SD1011/Piles_et_Files.pdfI On choisit une SD en fonction de l’application. Dans ce cours on va voir lespileset lesfiles(variantes

Piles

Dessin !Last In First Out (LIFO)

dépiler

tête

I La dernière information rangée est la première disponibleLaure Gonnord (Lille1/Polytech’Lille) Structures de données IMA S6 Piles et Files Février 2011 � 6 / 18 �

Page 11: Structures de données, IMA S6laure.gonnord.org/pro/teaching/SD1011/Piles_et_Files.pdfI On choisit une SD en fonction de l’application. Dans ce cours on va voir lespileset lesfiles(variantes

Piles

Le type abstrait Pile

Définition en pseudocode :pile de entiers

Opérations :empiler(P,el) : ajoute l’élement en haut de piledépiler(P,var) : retire l’élément et stocke dans varint sommet(P) : regarde l’élement de haut de pilebool pileVide(P) : teste si la pile est videinitPile(P) : initialise P à videbool pilePleine(P) : teste si la pile (bornée) est pleine

Laure Gonnord (Lille1/Polytech’Lille) Structures de données IMA S6 Piles et Files Février 2011 � 7 / 18 �

Page 12: Structures de données, IMA S6laure.gonnord.org/pro/teaching/SD1011/Piles_et_Files.pdfI On choisit une SD en fonction de l’application. Dans ce cours on va voir lespileset lesfiles(variantes

Piles

Vers l’idée de bibliothèque / library

Avec ces opérations de base, on peut écrire des algorithmesutilisant les piles sans connaître quoi que ce soit surl’implémentation.

Remarque normalement les détails d’implémentation sontdans la doc de la bibliothèque.

Laure Gonnord (Lille1/Polytech’Lille) Structures de données IMA S6 Piles et Files Février 2011 � 8 / 18 �

Page 13: Structures de données, IMA S6laure.gonnord.org/pro/teaching/SD1011/Piles_et_Files.pdfI On choisit une SD en fonction de l’application. Dans ce cours on va voir lespileset lesfiles(variantes

Piles

Utilisation d’une pile

Exos classiques :Écrire (en utilisant les piles) un algorithme qui dit si unechaîne de caractères donnée est bien parenthésé.La calculette en notation polonaise inversée (cf TD)

Laure Gonnord (Lille1/Polytech’Lille) Structures de données IMA S6 Piles et Files Février 2011 � 9 / 18 �

Page 14: Structures de données, IMA S6laure.gonnord.org/pro/teaching/SD1011/Piles_et_Files.pdfI On choisit une SD en fonction de l’application. Dans ce cours on va voir lespileset lesfiles(variantes

Piles

Implémentation d’une pile - 1

On a le choix :Implémentation par liste contiguëImplémentation par liste chaînée

I commençons par la liste contiguë

Laure Gonnord (Lille1/Polytech’Lille) Structures de données IMA S6 Piles et Files Février 2011 � 10 / 18 �

Page 15: Structures de données, IMA S6laure.gonnord.org/pro/teaching/SD1011/Piles_et_Files.pdfI On choisit une SD en fonction de l’application. Dans ce cours on va voir lespileset lesfiles(variantes

Piles

Implémentation d’une pile - 2

On parle de type concret. Déclaration d’une pile d’entiers :

Structure Pileindex : Entiertab : tableau[MAX] d’entiers

FStruct

I écrivons les fonctions de base :empiler(P,el) : ajoute l’élement en haut de piledépiler(P,var) : retire l’élément et stocke dans varint sommet(P) : regarde l’élement de haut de pilebool pileVide(P) : teste si la pile est videinitPile(P) : initialise P à videbool pilePleine(P) : teste si la pile (bornée) est pleine

Laure Gonnord (Lille1/Polytech’Lille) Structures de données IMA S6 Piles et Files Février 2011 � 11 / 18 �

Page 16: Structures de données, IMA S6laure.gonnord.org/pro/teaching/SD1011/Piles_et_Files.pdfI On choisit une SD en fonction de l’application. Dans ce cours on va voir lespileset lesfiles(variantes

Piles

Implémentation d’une pile - 3

Avantages des listes chaînées :pas de limite sur le nb d’élémentsmoins de place mémoire

Sinon, n’apporte rien au niveau algo !

I Implémentation par listes contiguës.

Laure Gonnord (Lille1/Polytech’Lille) Structures de données IMA S6 Piles et Files Février 2011 � 12 / 18 �

Page 17: Structures de données, IMA S6laure.gonnord.org/pro/teaching/SD1011/Piles_et_Files.pdfI On choisit une SD en fonction de l’application. Dans ce cours on va voir lespileset lesfiles(variantes

Files

1 Piles

2 Files

Laure Gonnord (Lille1/Polytech’Lille) Structures de données IMA S6 Piles et Files Février 2011 � 13 / 18 �

Page 18: Structures de données, IMA S6laure.gonnord.org/pro/teaching/SD1011/Piles_et_Files.pdfI On choisit une SD en fonction de l’application. Dans ce cours on va voir lespileset lesfiles(variantes

Files

Description - UtilisationSD dans laquelle les éléments sont utilisés dans l’ordre de leurrangement (FIFO)

... ...

get put

têtequeue

stock de données périssablesfiles d’attente de supermarchégestion de ressource partagée.

Laure Gonnord (Lille1/Polytech’Lille) Structures de données IMA S6 Piles et Files Février 2011 � 14 / 18 �

Page 19: Structures de données, IMA S6laure.gonnord.org/pro/teaching/SD1011/Piles_et_Files.pdfI On choisit une SD en fonction de l’application. Dans ce cours on va voir lespileset lesfiles(variantes

Files

Le type abstrait File (fifo) - interface

Définition en pseudocode :fifo de entiers

Opérations :initFifo(F) : initialise F à videbool isFifoEmpty(F) : teste si la file est videbool isFifoFull(F) : teste si la file (bornée) est pleineput(F,el) : range en queue de fileget(F,var) : retire l’élément de début de file et stockedans varint first(F) : regarde l’élement de début de file

Laure Gonnord (Lille1/Polytech’Lille) Structures de données IMA S6 Piles et Files Février 2011 � 15 / 18 �

Page 20: Structures de données, IMA S6laure.gonnord.org/pro/teaching/SD1011/Piles_et_Files.pdfI On choisit une SD en fonction de l’application. Dans ce cours on va voir lespileset lesfiles(variantes

Files

Implémentation d’une file - 1

Implem par liste chaînée :Fortement dynamique mais sans estimation de taille maxGet et first : accès aiséPut et last : accès coûteux

I Liste chaînée avec un pointeur de queue.

Structure Fifohead : pointeur de Celluletail : pointeur de Cellule

FStruct

I Implémentons initFifo, first et get

Laure Gonnord (Lille1/Polytech’Lille) Structures de données IMA S6 Piles et Files Février 2011 � 16 / 18 �

Page 21: Structures de données, IMA S6laure.gonnord.org/pro/teaching/SD1011/Piles_et_Files.pdfI On choisit une SD en fonction de l’application. Dans ce cours on va voir lespileset lesfiles(variantes

Files

Implémentation d’une file - 2

Implem par liste contiguë :Taille peu variable mais max connuePut et last : accès en queue aisé avec indice dernierFirst : accès en tête, donc ok.Get : comment gérer la tête variable ?

compactage systématique : cherindice premier avec un espace libre devantsolution : boucler sur l’espace

I Implémentons initFifo, isfifoEmpty, isfifoFull, first,put et get

Laure Gonnord (Lille1/Polytech’Lille) Structures de données IMA S6 Piles et Files Février 2011 � 17 / 18 �

Page 22: Structures de données, IMA S6laure.gonnord.org/pro/teaching/SD1011/Piles_et_Files.pdfI On choisit une SD en fonction de l’application. Dans ce cours on va voir lespileset lesfiles(variantes

Files

Implémentation d’une file - 3

Alors, liste ou tableau ? I Comme d’habitude, cela dépend !

Laure Gonnord (Lille1/Polytech’Lille) Structures de données IMA S6 Piles et Files Février 2011 � 18 / 18 �