Structures de données, IMA S6

Documents pareils
TP n 2 Concepts de la programmation Objets Master 1 mention IL, semestre 2 Le type Abstrait Pile

Algorithmique et Programmation, IMA

Génie Logiciel avec Ada. 4 février 2013

Centre CPGE TSI - Safi 2010/2011. Algorithmique et programmation :

Université Bordeaux 1, Licence Semestre 3 - Algorithmes et struct...

Traduction des Langages : Le Compilateur Micro Java

Déroulement. Evaluation. Préambule. Définition. Définition. Algorithmes et structures de données 28/09/2009


INITIATION AU LANGAGE C SUR PIC DE MICROSHIP

Correction TD algorithmique

Correction TD Algorithmique 5.3 Pile Liste 5.3 Pile

1 Recherche en table par balayage

Exercices INF5171 : série #3 (Automne 2012)

INTRODUCTION AUX SYSTEMES D EXPLOITATION. TD2 Exclusion mutuelle / Sémaphores

C++ COURS N 2 : CLASSES, DONNÉES ET FONCTIONS MEMBRES Classes et objets en C++ Membres d'une classe Spécification d'une classe Codage du comportement

Structure fonctionnelle d un SGBD

Chapitre 5 : Flot maximal dans un graphe

Les arbres binaires de recherche

Bases de programmation. Cours 5. Structurer les données

CHAPITRE 4 LA VALORISATION DES STOCKS COURS DE COMPTABILITE ANALYTIQUE SEMESTRE 2 DUT TC

Architecture des ordinateurs

Chap III : Les tableaux

Premiers Pas en Programmation Objet : les Classes et les Objets

Architecture des Systèmes d Information Architecture des Systèmes d Information

Licence Bio Informatique Année Premiers pas. Exercice 1 Hello World parce qu il faut bien commencer par quelque chose...

Problèmes liés à la concurrence

Ensimag 1ère année Algorithmique 1 Examen 2ième session 24 juin Algorithmique 1

Cours de Systèmes d Exploitation

Introduction à la programmation concurrente

Rappel. Analyse de Données Structurées - Cours 12. Un langage avec des déclaration locales. Exemple d'un programme

Cours de Programmation Impérative: Zones de mémoires et pointeurs

Entraînement au concours ACM-ICPC

Cours d introduction à l informatique. Partie 2 : Comment écrire un algorithme? Qu est-ce qu une variable? Expressions et instructions

Exclusion Mutuelle. Arnaud Labourel Courriel : arnaud.labourel@lif.univ-mrs.fr. Université de Provence. 9 février 2011

IRL : Simulation distribuée pour les systèmes embarqués

Définitions. Numéro à préciser. (Durée : )

Programmation C++ (débutant)/instructions for, while et do...while

Fonctions de deux variables. Mai 2011

Éléments d informatique Cours 3 La programmation structurée en langage C L instruction de contrôle if

Complexité. Licence Informatique - Semestre 2 - Algorithmique et Programmation

Sub CalculAnnuite() Const TITRE As String = "Calcul d'annuité de remboursement d'un emprunt"

Informatique Générale

Recherche dans un tableau

Chapitre V : La gestion de la mémoire. Hiérarchie de mémoires Objectifs Méthodes d'allocation Simulation de mémoire virtuelle Le mapping

Initiation à LabView : Les exemples d applications :

Algorithmique, Structures de données et langage C

Définition des Webservices Ordre de paiement par . Version 1.0

Feuille TD n 1 Exercices d algorithmique éléments de correction

GESTION DE STOCKS AVEC CIEL GESTION COMMERCIALE

Structure d un programme

Le langage C. Séance n 4

Souad EL Bernoussi. Groupe d Analyse Numérique et Optimisation Rabat http ://

ALGORITHMIQUE II NOTION DE COMPLEXITE. SMI AlgoII

1 de 46. Algorithmique. Trouver et Trier. Florent Hivert. Mél : Florent.Hivert@lri.fr Page personnelle : hivert

Application web de gestion de comptes en banques

TP3 : Manipulation et implantation de systèmes de fichiers 1

1/24. I passer d un problème exprimé en français à la réalisation d un. I expressions arithmétiques. I structures de contrôle (tests, boucles)

SNT4U16 - Initiation à la programmation TD - Dynamique de POP III - Fichiers sources

RÉPUBLIQUE ET CANTON DE GENÈVE Echelle des traitements 2015 Valable dès le Office du personnel de l'etat Indexation de 0.

Approche Contract First

Programmation linéaire

UE Programmation Impérative Licence 2ème Année

Notice d utilisation

MISE A NIVEAU INFORMATIQUE LANGAGE C - EXEMPLES DE PROGRAMMES. Université Paris Dauphine IUP Génie Mathématique et Informatique 2 ème année

IN Cours 1. 1 Informatique, calculateurs. 2 Un premier programme en C

UE C avancé cours 1: introduction et révisions

QUESTION 1 QUESTION 2 QUESTION 3 QUESTION 4. Que signifie "shortage"? Que signifie "handling"? Que signifie "raw material" Que signifie "tool"?

MapReduce. Nicolas Dugué M2 MIAGE Systèmes d information répartis

1 Année LMD-STSM Algorithmique et Programmation. Série de TD 2

MICROINFORMATIQUE NOTE D APPLICATION 1 (REV. 2011) ARITHMETIQUE EN ASSEMBLEUR ET EN C

Application 1- VBA : Test de comportements d'investissements

COMPARAISONDESLANGAGESC, C++, JAVA ET

TP Protocoles SMTP et POP3 avec Pratiquer l algorithmique

Styler un document sous OpenOffice 4.0

TP1 : Initiation à Java et Eclipse

Solutions du chapitre 4

Conventions d écriture et outils de mise au point

TP 1. Prise en main du langage Python

# let rec concat l1 l2 = match l1 with [] -> l2 x::l 1 -> x::(concat l 1 l2);; val concat : a list -> a list -> a list = <fun>

Corrigé des exercices sur les références

DE L ALGORITHME AU PROGRAMME INTRO AU LANGAGE C 51

Quelques algorithmes simples dont l analyse n est pas si simple

Cours d Informatique

Baccalauréat ES/L Amérique du Sud 21 novembre 2013

La programmation orientée objet et le langage C++

I. Introduction aux fonctions : les fonctions standards

Prénom : Matricule : Sigle et titre du cours Groupe Trimestre INF1101 Algorithmes et structures de données Tous H2004. Loc Jeudi 29/4/2004

Plan du cours Cours théoriques. 29 septembre 2014

Capacité de mémoire Tablettes

Cours 1 : Introduction. Langages objets. but du module. contrôle des connaissances. Pourquoi Java? présentation du module. Présentation de Java

Algorithmique et Programmation Fonctionnelle

4. Groupement d objets

Processus! programme. DIMA, Systèmes Centralisés (Ph. Mauran) " Processus = suite d'actions = suite d'états obtenus = trace

Algorithmique I. Algorithmique I p.1/??

Les structures. Chapitre 3

TD/TP PAC - Programmation n 3

Pour signifier qu'une classe fille hérite d'une classe mère, on utilise le mot clé extends class fille extends mère

Initiation à la Programmation en Logique avec SISCtus Prolog

LES REGLEMENTS AVEC SOCIEL.NET DERNIERE MISE A JOUR : le 14 juin 2010

Factorisation Factoriser en utilisant un facteur commun Fiche méthode

Transcription:

Structures de données, IMA S6 Piles et Files Laure Gonnord http://laure.gonnord.org/pro/teaching/ Laure.Gonnord@polytech-lille.fr Université Lille 1 - Polytech Lille Février 2011

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

Plan Introduction Jusqu à présent, on a vu : Les listes contiguës (tableaux). Les listes chaînées simples, doublement chaînées... Chacune de ces SD effectue un compromis (complexité des opérations, temps, mémoire) On choisit une SD en fonction de l application. Dans ce cours on va voir les piles et les files (variantes des listes chaînées). Laure Gonnord (Lille1/Polytech Lille) Structures de données IMA S6 Piles et Files Février 2011 3 / 18

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

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). Toutes les fois où l information importante est la dernière rangé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

Dessin! Last In First Out (LIFO) La dernière information rangée est la première disponible Laure Gonnord (Lille1/Polytech Lille) Structures de données IMA S6 Piles et Files Février 2011 6 / 18

Dessin! Last In First Out (LIFO) tête La dernière information rangée est la première disponible Laure Gonnord (Lille1/Polytech Lille) Structures de données IMA S6 Piles et Files Février 2011 6 / 18

Dessin! Last In First Out (LIFO) empiler La dernière information rangée est la première disponible Laure Gonnord (Lille1/Polytech Lille) Structures de données IMA S6 Piles et Files Février 2011 6 / 18

Dessin! Last In First Out (LIFO) tête La dernière information rangée est la première disponible Laure Gonnord (Lille1/Polytech Lille) Structures de données IMA S6 Piles et Files Février 2011 6 / 18

Dessin! Last In First Out (LIFO) dépiler tête La dernière information rangée est la première disponible Laure Gonnord (Lille1/Polytech Lille) Structures de données IMA S6 Piles et Files Février 2011 6 / 18

Le type abstrait Pile Définition en pseudocode : pile de entiers Opérations : empiler(p,el) : ajoute l élement en haut de pile dépiler(p,var) : retire l élément et stocke dans var int sommet(p) : regarde l élement de haut de pile bool pilevide(p) : teste si la pile est vide initpile(p) : initialise P à vide bool 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

Vers l idée de bibliothèque / library Avec ces opérations de base, on peut écrire des algorithmes utilisant les piles sans connaître quoi que ce soit sur l implémentation. Remarque normalement les détails d implémentation sont dans 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

Utilisation d une pile Exos classiques : Écrire (en utilisant les piles) un algorithme qui dit si une chaî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

Implémentation d une pile - 1 On a le choix : Implémentation par liste contiguë Implémentation par liste chaînée 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

Implémentation d une pile - 2 On parle de type concret. Déclaration d une pile d entiers : Structure Pile index : Entier tab : tableau[max] d entiers FStruct écrivons les fonctions de base : empiler(p,el) : ajoute l élement en haut de pile dépiler(p,var) : retire l élément et stocke dans var int sommet(p) : regarde l élement de haut de pile bool pilevide(p) : teste si la pile est vide initpile(p) : initialise P à vide bool 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

Implémentation d une pile - 3 Avantages des listes chaînées : pas de limite sur le nb d éléments moins de place mémoire Sinon, n apporte rien au niveau algo! 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

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

Files Description - Utilisation SD dans laquelle les éléments sont utilisés dans l ordre de leur rangement (FIFO) get put...... tête queue stock de données périssables files 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

Files Le type abstrait File (fifo) - interface Définition en pseudocode : fifo de entiers Opérations : initfifo(f) : initialise F à vide bool isfifoempty(f) : teste si la file est vide bool isfifofull(f) : teste si la file (bornée) est pleine put(f,el) : range en queue de file get(f,var) : retire l élément de début de file et stocke dans var int 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

Files Implémentation d une file - 1 Implem par liste chaînée : Fortement dynamique mais sans estimation de taille max Get et first : accès aisé Put et last : accès coûteux Liste chaînée avec un pointeur de queue. Structure Fifo head : pointeur de Cellule tail : pointeur de Cellule FStruct 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

Files Implémentation d une file - 2 Implem par liste contiguë : Taille peu variable mais max connue Put et last : accès en queue aisé avec indice dernier First : accès en tête, donc ok. Get : comment gérer la tête variable? compactage systématique : cher indice premier avec un espace libre devant solution : boucler sur l espace 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

Files Implémentation d une file - 3 Alors, liste ou tableau? 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