IFT-2000: Structures de données Piles et files Dominic Genest, 2009.

Slides:



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

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
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
Types de données abstraites
1 UMLV 1. Introduction 2. Hachage ouvert 3. Hachage fermé 4. Implémentation des fonctions Méthodes de hachage.
Chap. 1 Structures séquentielles : listes linéaires
Utilisation des tableaux
Chapitre IV. Structures linéaires (piles, files, listes chaînées)
Cours 8 Arbres équilibrés
ALGORITHMES RECURSIFS
Structures collectives en Java
Structures de données linéaires
Algo-Prog en Ada TD1 2 MIC Romaric GUILLERM
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.
Récursivité.
Cours d’Algorithmique
Dérécursivation Dérécursiver, c’est transformer un algorithme récursif en un algorithme équivalent ne contenant pas d’appels récursifs. Récursivité terminale.
Les structures de données arborescentes
II. Chaînage, SDD séquentielles
Les algorithmes: complexité et notation asymptotique
Leçon 6 : Structures de données dynamiques IUP 2 Génie Informatique Méthode et Outils pour la Programmation Françoise Greffier.
Définition d’un maillon de liste
IFT-2000: Structures de Données Introduction à lanalyse dalgorithmes Dominic Genest, 2009.
IFT-2000: Structures de Données Listes chaînées Dominic Genest, 2009.
Structures de données IFT-2000
Abder Alikacem Semaine 13 La récursivité
IFT-2000: Structures de données Plan de cours Théorie du contrat Types abstraits Dominic Genest, 2009.
IFT-2000: Structures de données
IFT-2000: Structures de données Les graphes Dominic Genest, 2009.
IFT-10541A : Hiver 2003 Semaine 5 : Piles et files.
Structures de données IFT Abder Alikacem La classe string Département dinformatique et de génie logiciel Édition Septembre 2009 Département dinformatique.
Structures de données IFT Abder Alikacem Espace de nommage Département d’informatique et de génie logiciel Édition Septembre 2009.
Structures de données IFT-2000 Abder Alikacem Espace de nommage Département dinformatique et de génie logiciel Édition Septembre 2009 Département dinformatique.
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.
Structures de données IFT Abder Alikacem Gestion des exceptions Département dinformatique et de génie logiciel Édition Septembre 2009.
Structures de données IFT-2000
Présentation Structures de Données et TDA

Efficacité des algorithmes
Efficacité des algorithmes
Exposé en structures de données

Structures de données IFT-2000
Structures de données IFT-10541
Structures de données IFT-2000 Abder Alikacem La récursivité Semaine 5 Département dinformatique et de génie logiciel Édition Septembre 2009.
Structures de données IFT-2000 Abder Alikacem Semaine 11 Gestion des arbres binaires de tri et de recherche. Les arbres cousus. Les arbres n-aires Département.
Structures de données IFT-2000 Abder Alikacem Retour sur les listes ordonnées Département dinformatique et de génie logiciel Édition Septembre 2009.
Structures de données IFT-2000 Abder Alikacem La récursivité Département d’informatique et de génie logiciel Édition Septembre 2009.
Structures de données IFT-2000
Le langage C Structures de données
Efficacité des algorithmes
Ch. PAUL - Piles et Files à l'aide de listes chainées
LES PILES ET FILES.
Arbres binaires et tables de hachage
Chaînage et LSC : motivation et principe Manipuler la LSC : exemples Variantes : LDC, liste circulaire, … Etude de cas : réalisation d’un buffer clavier.
ETNA – 1ème année Guillaume Belmas –
Liste Une liste est une séquence d’éléments. Concept important: Chaque élément possède une position dans la liste. Notation: De quelles opérations a-t-on.
CPI/BTS 2 Algorithmique & Programmation La récursivité Algo – Prog CPI/BTS2 – M. Dravet – 14/09/2003 Dernière modification: 14/09/2003.
Structures de données avancées : Principales structures de fichiers
Chaînage et LSC : motivation et principe Manipuler la LSC : exemples Variantes : LDC, liste circulaire, … Etude de cas : réalisation d’un buffer clavier.
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.
Piles.
Structure de données Les listes.
Transcription de la présentation:

IFT-2000: Structures de données Piles et files Dominic Genest, 2009

Les piles et les files Les piles et les files sont des structures où on restreint les opérations à un seul bout; soit le début, soit la fin. Dans le cas dune pile, on oblige à faire les insertions toujours à la même extrémité que les suppressions; comme dans une vraie pile. Dans le cas dune file, on oblige à faire les insertions toujours à lextrémité opposée à celle où lon fait les suppressions; comme dans une vraie file. Dans les deux structures, normalement, on ne permet laccès quau prochain élément supprimable. Dans une pile, plutôt que de dire « insérer », on dit « empiler », et plutôt que de dire « supprimer », on dit « dépiler ». Et dans une file, on dit « enfiler » et « défiler ». Dominic Genest, 2009

Les implémentations des piles et des files Les piles et les files ne sont pas de nouvelles façons dimplémenter des structures de données, ils ne sont que des façons de définir les interfaces et les fonctions. On peut donc utiliser nimporte quelle structure linéaire (tableau statique, dynamique, liste chaînée simple ou double) pour les implémenter. Curieusement, même si cela paraît insignifiant car il ne sagit après tout que de nommer une opération autrement, le fait de parler dune pile ou dune file simplifie grandement lexpression de certains algorithmes. De la même façon, le code qui utilise des structures et leurs fonctions nommées dune telle façon deviendra beaucoup plus clair et facile à déboguer. Dominic Genest, 2009

Une pile par tableau statique #define MAX 1000 typedef enum { OK, Erreur,PilePleine,PileVide } CodeErreur; Typedef enum { FAUX, VIDE } BOOL; typedef struct { Etudiant t[MAX]; int n; } PileDEtudiants; CodeErreur init(PileDEtudiants *p) { p->n=0; return OK; } CodeErreur empiler(PileDEtudiants *p, Etudiant e) { if(p->n==MAX) return PilePleine; p->t[p->n++] = e; return OK; } CodeErreur depiler(PileDEtudiants *p) { if(p->n==0) return PileVide; p->n--; return OK; } CodeErreur dessus(const PileDEtudiants *p, Etudiant *e) { if(p->n==0) return PileVide; *e = p->t[p->n-1]; return OK; } BOOL estVide(const PileDEtudiants *p) { return p->n==0; } Dominic Genest, 2009

Exemples dutilisation de piles et de files Piles: – Parcours en profondeur de graphes – Interpréteurs et compilateurs Files: – Parcours en largeur de graphes. – Tâches en attente pour une ressource temporairement non disponible Dominic Genest, 2009

Files prioritaires Dans une file prioritaire, le prochain élément défilé nest pas nécessairement le premier qui a été enfilé. Un autre critère est employé pour déterminer le prochain à être défilé. Il peut sagir: – Soit dune valeur de priorité explicitement spécifiée lors de lenfilement – Soit de la comparaison dune valeur qui résulte dun calcul sur les données de la file. Par exemple: Létudiant le plus jeune en premier Le point le plus près de lorigine en premier) Dominic Genest, 2009

Files prioritaires Pour implémenter une file prioritaire, on peut: – Soit placer lélément à la bonne place dès lenfilement, de sorte que le défilement se fasse directement sur une extrémité de la structure. Ceci est beaucoup plus efficace, car linsertion selon un certain critère de tri peut se faire par dichotomie (par séparation récursive en deux), nous nous attarderons à ça lors de lintroduction aux arbres binaires. – Soit placer lélément à une extrémité de la structure, de sorte quil faille effectuer la recherche du plus prioritaire lors du défilement. Cela peut être nécessaire lorsque la priorité dépend aussi de données externes, qui peuvent avoir changé depuis lenfilement. Dominic Genest, 2009

Implémentation dune file prioritaire détudiants selon lâge, par tableau statique Dominic Genest, 2009 #define MAX 1000 typedef enum { OK, Erreur,FilePleine,FileVide } CodeErreur; typedef enum { FAUX, VIDE } BOOL; typedef struct { Etudiant t[MAX]; int n; } FileDEtudiants; CodeErreur init(FileDEtudiants *f) { f->n=0; return OK; } CodeErreur emfiler(FileDEtudiants *f, Etudiant e) { int i, pos; if(f->n==MAX) return FilePleine; for(pos=0;pos n && f- >t[pos].age<e.age;pos++); for(i=f->n;i>pos;i--) f->t[i]=f->t[i-1]; f->t[pos] = e; f->n++; return OK; } CodeErreur defiler(FileDEtudiants *f) { if(f->n==0) return FileVide; f->n--; return OK; } CodeErreur prochain(const FileDEtudiants *f, Etudiant *e) { if(f->n==0) return FileVide; *e = f->t[f->n-1]; return OK; } BOOL estVide(const FileDEtudiants *f) { return f->n==0; }