II. Chaînage, SDD séquentielles

Click here to load reader

download II. Chaînage, SDD séquentielles

of 27

description

II. Chaînage, SDD séquentielles.  Piles et Files. Motivation. Pour de nombreux algorithmes et SDD séquentielles Opérations limitées et contraintes Ajout et retrait seulement aux extrémités (tête, queue) Ecrire : créer un maillon, copier l’élément, ajouter le maillon - PowerPoint PPT Presentation

Transcript of II. Chaînage, SDD séquentielles

Structures De Donnes

II. Chanage, SDD squentielles Piles et Files1Motivation2Pour de nombreux algorithmes et SDD squentiellesOprations limites et contraintesAjout et retrait seulement aux extrmits (tte, queue)Ecrire : crer un maillon, copier llment, ajouter le maillonLire : retirer le maillon, copier llment, supprimer le maillon Deux structures fondamentalesAjout et retrait seulement en tte : pileAjout resp. retrait en queue resp. en tte : file

Vocabulaire3Dsignation comportementale FIFO/LIFOFirst In First Out = une file (EN : queue)Last In First Out = une pile (EN : stack)ExtrmitsTtesPile : sommet (EN : top)File : sortieQueuesPile : baseFile : entreOprationsEN : push/popFR : empiler/dpiler resp. enfiler/dfilerDimensionsHauteur dune pile vs. longueur dune file

Reprsentation4SommetBaseSortieEntrePUSHPOPPUSHPOPApplications types5De manire gnraleLa pile sert mmoriser des rsultats intermdiairesPile dappels, analyseur syntaxiqueLa file sert en temporiser des fluxTampons pour la communication inter processusEn algorithmiqueStructures auxiliaires lmentaires les plus courantesAlgorithme gnrique de parcours itratif dun arbreUtilisation dune pile : parcours en profondeurUtilisation dune file : parcours en largeur

5 oprations (et pas davantage)6SpcificationCration et supressionTester si la _ile est videE__iler (push)D_iler (pop)ImplmentationStatique avec tableauDynamique avec chanageLutilisation dune LSC ? Pertinent !

Implmentation statique de la pile7Limite n lmentsTableau P[1..n] et attribut sommetLlment situ la base de la pile : P[1]Llment situ au sommet de la pile : P[sommet]La pile est vide ssi sommet = 0Un empilement peut avoir lieu ssi sommet < nsommet est alors incrmentUn dpilement peut avoir lieu ssi sommet > 0sommet est alors dcrment

Implmentation statique de la pileEn langage algorithmiqueExemple de traduction en C8typedef struct pile{ T donne[n]; int sommet;} pile;typedef pile *pile_adr;

8Crer une pile9

Test de pile vide10

Empiler11

Dpiler12

Implmentation statique de la file13Tableau P[1..n] et attributsentre : index de la position libre suivantesortie : index de llment de tteOprations sur les index : modulo nPrincipe similaire ce qui a t vu pour le buffer clavierReprageLlment situ lentre de la file : P[entre 1]Llment situ la sortie de la file : P[sortie]Difficult : gestion des dbordements positif et ngatifFile vide ssi entre = indexEt pour la file pleine ?Pourquoi la capacit est-elle limite n 1 ?

Implmentation dynamique de la pile14Deux possibilitsA) Utiliser simplement une LSCB) Composer dans une structureune LSCun champ profondeurDans les deux cas, la tte joue le rle de sommet

Implmentation dynamique de la pileEn langage algorithmiqueExemple de traduction en C15typedef struct pile{ liste sommet; unsigned hauteur; // option} pile;typedef pile *pile_adr;

15Crer une pile16

Test de pile vide17

Empiler18

Dpiler19

Implmentation dynamique de la file20StructureUne LSCDeux adresses :La sortie de file (la tte de la LSC)La sortie de file (la tte de la LSC)Optionun champ largeurOn ne prsente ci-aprs que la version sans largeurPour adapter vos algos cf. pile

Implmentation dynamique de la fileEn langage algorithmiqueExemple de traduction en C21typedef struct file{ liste entree; liste sortie;} file;typedef file *file_adr;

21Crer une file22

Test de file vide23

Enfiler24Algorithme 37: Enfiler (f: file_adr, e: T) (version dynamiqueDonne: ladresse de la file fDonne: llment e enfiler dans fVariable locale: Ladresse m du maillon crer pour stocker e

dbutm rserver maillonm info em succ nulsi EstFileVide (f) alorsf sortie msinonf entre succ mfinf entre mfinDfiler25 Algorithme 38: Defiler (f: file_adr): T (version dynamiqueDonne: ladresse de la file fVariable locale: Llment e dfil de fVariable locale: Ladresse m du maillon supprimer aprs lextraction de e

dbutsi EstFileVide (f) alors erreur dbordement ngatifsinonm fsortiefsortie msuccsi fsortie = nul alors fentre nulfine minfolibrer mretourner efinfinSimuler la rcursivit avec une pile26Soit lalgorithme rcursif suivant :En donner la version itrative qui simule la rcursivitTip Utiliser une pile auxiliaire comme pile dappels

Si on inverse, dfiler implique ditrer jusquau prec de la queue : contreperf !26Simuler la rcursivit avec une pile27

Si on inverse, dfiler implique ditrer jusquau prec de la queue : contreperf !27