Chaînage et LSC : motivation et principe Manipuler la LSC : exemples Variantes : LDC, liste circulaire, … Etude de cas : réalisation d’un buffer clavier.

Slides:



Advertisements
Présentations similaires
Structures de données avancées : Principales structures de données
Advertisements

Chap. 4 Recherche en Table
Parcours.
Masters IIGLI et IGLII – Programmation générique et conception objet – – Claude Montacié 1 Cours n° 5 Structures de données abstraites.
Piles, files et listes: notions théoriques
Algorithmes et structures de données avancées Cours 1+2+3
Structures de données et complexité
Structures de données et complexité LIFO – FILO – FIFO – etc…
Au programme du jour …. Un peu plus de structures de données
Introduction à l’Algorithmique
Cours n° 8 Conception et Programmation à Objets
La programmation générique avec la STL EIUMLV - Informatique et Réseaux 99 Benoît ROMAND.
Cours d’Algorithmique
Algorithme et structure de données
Les structures de données
Chap. 1 Structures séquentielles : listes linéaires
Système d’exploitation : Assembleur
PILE voir l'animation: Diaporama / Visualiser ...
Chapitre IV. Structures linéaires (piles, files, listes chaînées)
UE NFA006 STRUCTURES DE DONNEES
Structures de données linéaires
IPA – Catherine Faron Zucke et Anne Marie Deryr. suite ordonnée d'éléments de taille variable ArrayList liste; liste = new ArrayList (); Ne peuvent contenir.
A B D A B D LSC avec « sentinelle »
Récursivité.
Cours d’Algorithmique
Les piles Djamal Rebaïne.
ALGORITHMIQUE Plan du cours Généralités -définition -importance
TD3 2 IMACS Romaric GUILLERM Algo-Prog en Ada.
II. Chaînage, SDD séquentielles
Leçon 6 : Structures de données dynamiques IUP 2 Génie Informatique Méthode et Outils pour la Programmation Françoise Greffier.
II. Chaînage, SDD séquentielles
Programmation fonctionnelle Le langage LISP
Définition d’un maillon de liste
Structures de données IFT-2000
Etude de cas : buffer clavier
IFT-10541A : Hiver 2003 Semaine 5 : Piles et files.
Structures de données IFT-2000
Structures de données IFT-2000
Structures de données IFT-2000
Structures de données IFT-2000 Abder Alikacem Standard Template library Édition Septembre 2009 Département dinformatique et de génie logiciel.
Présentation Structures de Données et TDA
Les listes chaînées par Frédérick Henri.

IFT-2000: Structures de données Piles et files Dominic Genest, 2009.
IV. Arbres  Arbre binaire (AB) Représentation SDD d’un AB
Structures de données IFT-10541
Structures de données IFT-2000
Exemple de gestion d'un buffer clavier en liste circulaire
Le langage C Structures de données
Introduction à l’algorithmique et aux structures de données
Graphes 1. Introduction 2. Définition 3. Représentation mémoire
Ch. PAUL - Piles et Files à l'aide de listes chainées
LES PILES ET FILES.
INTRODUCTION.
II. Chaînage, SDD séquentielles
Arbres binaires et tables de hachage
II. Chaînage, SDD séquentielles
ETNA – 1ème année Guillaume Belmas –
Structures de données avancées : Fichiers multidimensionnels Pr ZEGOUR DJAMEL EDDINE Ecole Supérieure d’Informatique (ESI) zegour.esi.dz
Programmation Orienté Objet en C++
Algorithmique et langage C. préambule Un processus est Un phénomène que l’on peut décrire. L’ algorithmique est l’ outil logique définissant les processus.
Structures de données avancées : Introduction D. E ZEGOUR Institut National d ’Informatique.
 Chaînage et LSC : motivation et principe Manipuler la LSC : exemples Variantes : LDC, liste circulaire, … Etude de cas : réalisation d’un buffer clavier.
Chaînage et LSC : motivation et principe  Manipuler la LSC : exemples Variantes : LDC, liste circulaire, … Etude de cas : réalisation d’un buffer clavier.
Chaînage et LSC : motivation et principe Manipuler la LSC : exemples Variantes : LDC, liste circulaire, … Etude de cas : réalisation d’un buffer clavier.
LES TABLEAUX Définition: Création d’un tableau:
Chaînage et LSC : motivation et principe Manipuler la LSC : exemples Variantes : LDC, liste circulaire, …  Etude de cas : réalisation d’un buffer clavier.
Types abstraits de données (TAD)
Informatique 2A Langage C 5ème séance. Déroulement de la séance 5 1 ère partie Étude des chaînes de caractères 2 ème partie Les structures 3.
II. Chaînage, SDD séquentielles
Transcription de la présentation:

Chaînage et LSC : motivation et principe Manipuler la LSC : exemples Variantes : LDC, liste circulaire, … Etude de cas : réalisation d’un buffer clavier  Piles et Files II. Chaînage, SDD séquentielles 1

Motivation 2  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 Lire : retirer le maillon, copier l’élément, supprimer le maillon   Deux structures fondamentales  Ajout et retrait seulement en tête : pile  Ajout resp. retrait en queue resp. en tête : file Séquentiel_ilesMotivation

Exemples de la vie courante 3 SéquentielPileExemples

Exemples de la vie courante SéquentielFileExemples

Vocabulaire 5  Désignation comportementale FIFO/LIFO  First In First Out = une file (EN : queue)  Last In First Out = une pile (EN : stack)  Extrémités  Têtes Pile : sommet (EN : top) File : sortie  Queues Pile : base File : entrée  Opérations  EN : push/pop  FR : empiler/dépiler resp. enfiler/défiler  Dimensions  Hauteur d’une pile vs. longueur d’une file Séquentiel_ileVocabulaire

Représentation 6 Sommet Base Sortie Entrée PUSHPOP PUSHPOP Séquentiel_ileVocabulaire

Applications types 7  De manière générale  La pile sert à mémoriser des résultats intermédiaires Pile d’appels, analyseur syntaxique  La file sert en temporiser des flux Tampons pour la communication inter processus  En algorithmique  Structures auxiliaires élémentaires les plus courantes Algorithme générique de parcours itératif d’un arbre Utilisation d’une pile : parcours en profondeur Utilisation d’une file : parcours en largeur Séquentiel_ileApplications

5 opérations (et pas davantage) 8  Spécification  Création et supression  Tester si la _ile est vide  E__iler (push)  Dé_iler (pop)  Implémentation  Statique avec tableau  Dynamique avec chaînage L’utilisation d’une LSC ? Pertinent ! Séquentiel_ileSpécification

Implémentation statique de la pile 9  Limitée à n éléments  Tableau P[1..n] et attribut sommet  L’élément situé à la base de la pile : P[1]  L’élément situé au sommet de la pile : P[sommet]  La pile est vide ssi sommet = 0  Un empilement peut avoir lieu ssi sommet < n  sommet est alors incrémenté  Un dépilement peut avoir lieu ssi somme > 0  sommet est alors décrémenté SéquentielPileImplém.Statique

Implémentation statique de la pile typedef struct pile { T donne[n]; int sommet; } pile; typedef pile *pile_adr; En langage algorithmiqueExemple de traduction en C SéquentielPileImplém.Statique 10

Initialiser une pile 11 SéquentielPileImplém.Statique

Test de pile vide 12 SéquentielPileImplém.Statique

Empiler 13 SéquentielPileImplém.Statique

Dépiler 14 SéquentielPileImplém.Statique

Implémentation statique de la file 15  Tableau P[1..n] et attributs  entrée : index de la position libre suivante  sortie : index de l’élément de tête  Opérations sur les index : modulo n  Principe similaire à ce qui a été vu pour le buffer clavier  Repérage  L’élément situé à l’entrée de la file : P[entrée – 1]  L’élément situé à la sortie de la file : P[sortie]  Difficulté : gestion des débordements positif et négatif  File vide ssi entrée = index  Et pour la file pleine ?  Pourquoi la capacité est-elle limitée à n – 1 ?  A vous de jouer (TP 2) ! SéquentielFileImplém.Statique

Implémentation dynamique de la pile 16  Deux possibilités  A) Utiliser simplement une LSC  B) Composer dans une structure une LSC un champ « profondeur »  Dans les deux cas, la tête joue le rôle de sommet Pourquoi ne pas utiliser plutôt la queue comme sommet ? SéquentielPileImplém.Dynamique

Implémentation dynamique de la pile typedef struct pile { liste sommet; unsigned hauteur; // option } pile; typedef pile *pile_adr; En langage algorithmiqueExemple de traduction en C SéquentielPileImplém.Dynamique 17

Créer une pile 18 SéquentielPileImplém.Dynamique

Test de pile vide 19 SéquentielPileImplém.Dynamique

Empiler 20 SéquentielPileImplém.Dynamique

Dépiler 21 SéquentielPileImplém.Dynamique

Implémentation dynamique de la file 22  Structure  Une LSC  Deux adresses : La sortie de file (la tête de la LSC)  Option un champ « largeur »  On ne présente ci-après que la version sans « largeur » Pour adapter vos algos  cf. pile SéquentielFileImplém.Dynamique

Implémentation dynamique de la file typedef struct pile { liste entree; liste sortie; } pile; typedef file *file_adr; En langage algorithmiqueExemple de traduction en C SéquentielFileImplém.Dynamique 23

Initialiser une file 24 SéquentielFileImplém.Dynamique

Test de file vide 25 SéquentielFileImplém.Dynamique

Enfiler 26 SéquentielFileImplém.Dynamique

Défiler 27 SéquentielFileImplém.Dynamique

Implémentation dynamique de la file 28  Question  Le choix tête = sortie et queue = entrée est-il arbitraire ? SéquentielFileImplém.Dynamique

Simuler la récursivité avec une pile 29  Soit l’algorithme récursif suivant : SéquentielPileExempleSimul. Rec.  En donner la version itérative qui simule la récursivité  Tip – Utiliser une pile auxiliaire comme pile d’appels

Simuler la récursivité avec une pile 30 SéquentielPileExempleSimul. Rec.