Structures de données, IMA S6. Listes avec sentinelle. Variantes des listes chaînées N. Devésa, Polytech Lille et A. Miné, ÉNS

Documents pareils
Informatique III: Programmation en C++

Projet INF242. Stéphane Devismes & Benjamin Wack. Pour ce projet les étudiants doivent former des groupes de 3 ou 4 étudiants.

Production statistique: passage d une démarche axée sur les domaines à une démarche axée sur les processus

Mesures du coefficient adiabatique γ de l air

1 Introduction à l effet Doppler.

Chapitre. Calculs financiers

Chapitre IV- Induction électromagnétique

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

NCCI : Modèle de calcul pour les pieds de poteaux articulés Poteaux en I en compression axiale

prix par consommateur identiques différents prix par identiques classique 3 unité différents 2 1

Guide pratique. L emploi des personnes handicapées

physique - chimie Livret de corrigés ministère de l éducation nationale Rédaction

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

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

ETUDE COMPARATIVE RELATIVE AU SERTISSAGE DES CANALISATIONS EN CUIVRE DANS LE SECTEUR DE LA RENOVATION

Flux de données Lecture/Ecriture Fichiers

Revue des Sciences et de la Technologie - RST- Volume 5 N 1 / janvier 2014

Les arbres binaires de recherche

Conventions d écriture et outils de mise au point

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

Travaux Dirigés n 1 : chaînes de caractères

Gestion distribuée (par sockets) de banque en Java

Comment évaluer la qualité d un résultat? Plan

BAILLY-GRANDVAUX Mathieu ZANIOLO Guillaume Professeur : Mrs Portehault

Algorithmique et Programmation, IMA

Introduction à JDBC. Accès aux bases de données en Java

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

Java DataBaseConnectivity

Les structures. Chapitre 3

Suivant les langages de programmation, modules plus avancés : modules imbriqués modules paramétrés par des modules (foncteurs)

INTRODUCTION A JAVA. Fichier en langage machine Exécutable

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

Java Licence Professionnelle CISII,

NCCI : Calcul d'assemblages de pieds de poteaux encastrés

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

TD3: tableaux avancées, première classe et chaînes

PREMIERE DEMANDE D UNE CARTE NATIONALE D IDENTITE

TD 11. Les trois montages fondamentaux E.C, B.C, C.C ; comparaisons et propriétés. Association d étages. *** :exercice traité en classe.

Approche Contract First

GESTION DES FICHIERS C/UNIX

PROCÉDURE POUR LA CRÉATION DU FOURNISSEUR POUR LE PAIEMENT DES FRAIS DE SERVICE DE GARDE SEULEMENT : BANQUE TD CANADA TRUST

1. Généralités FR.TBLZ

Étape II. Compétences à développer de 8 à 12 ans. Grilles des compétences

Poker. A rendre pour le 25 avril

DocumentHumain. Confidentiel. Disposition de fin de vie

Rappels Entrées -Sorties

Mise en œuvre des serveurs d application

Chapitre 10. Les interfaces Comparable et Comparator 1

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

Atelier C TIA Portal CTIA04 : Programmation des automates S7-300 Opérations numériques

1. Structure d un programme C. 2. Commentaire: /*..texte */ On utilise aussi le commentaire du C++ qui est valable pour C: 3.

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

STAGE ENTREPRISE. Chers Parents,

Guide d installation de Java et des pilotes de lecture des supports

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

Lambda! Rémi Forax Univ Paris-Est Marne-la-Vallée

PROCÉDURE POUR LA CRÉATION DU FOURNISSEUR POUR LE PAIEMENT DES FRAIS DE SERVICE DE GARDE SEULEMENT : BANQUE TD CANADA TRUST

Techniques d analyse de circuits

Le langage C++ est un langage de programmation puissant, polyvalent, on serait presque tenté de dire universel, massivement utilisé dans l'industrie

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

Chap III : Les tableaux

Réaliser la fiche de lecture du document distribué en suivant les différentes étapes de la méthodologie (consulter le support du TD!

Guide des fonctions avancées de mywishtv

Algorithmique, Structures de données et langage C

Programme Compte bancaire (code)

Cours de Systèmes d Exploitation

introduction Chapitre 5 Récursivité Exemples mathématiques Fonction factorielle ø est un arbre (vide) Images récursives

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)

Dérivation : Résumé de cours et méthodes

MODELE DE BRIEF AGENCE

Resolution limit in community detection

Chapitre 2. Classes et objets

Le compte satellite des institutions sans but lucratif

RAPPELS SUR LES METHODES HERITEES DE LA CLASSE RACINE Object ET LEUR SPECIALISATION (i.e. REDEFINITION)

Brefs rappels sur la pile et le tas (Stack. / Heap) et les pointeurs

Les processus légers : threads. Système L3, /31

Modifications des modèles de factures

Utilisation d objets : String et ArrayList

CHAUFFAGE PAR LE BOIS ESPACE AQUALUDIQUE DE CARHAIX PREMIER RETOUR D EXPERIENCE APRES TROIS ANNEES DE FONCTIONNEMENT

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP

Introduction au langage C

Recherche dans un tableau

STAGE IREM 0- Premiers pas en Python

Monopoint / Kit applique serrure EL Série 9560

Équations différentielles et systèmes dynamiques. M. Jean-Christophe Yoccoz, membre de l'institut (Académie des Sciences), professeur

Logiciel de facturation (ASP) pour les distributeurs de combustibles

Programmation Objet Java Correction

La persistance des données dans les applications : DAO, JPA, Hibernate... COMPIL 2010 francois.jannin@inp-toulouse.fr 1

Projet L1, S2, 2015: Simulation de fourmis, Soutenance la semaine du 4 mai.

SmartCam HD. Guide d utilisation

Cahier des charges. driver WIFI pour chipset Ralink RT2571W. sur hardware ARM7

3. Veuillez indiquer votre effectif total :

Bases de données documentaires et distribuées Cours NFE04

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

Assurance Qualité. Cours de génie logiciel. Renaud Marlet. LaBRI / INRIA (d'après A.-M. Hugues) màj 23/04/2007

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

03/04/2007. Tâche 1 Tâche 2 Tâche 3. Système Unix. Time sharing

Compression de Données - Algorithme de Huffman Document de Conception

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

UEO11 COURS/TD 1. nombres entiers et réels codés en mémoire centrale. Caractères alphabétiques et caractères spéciaux.

Transcription:

Plan Strutures de données, IMA S6 Variantes des listes haînées N. Devésa, Polyteh Lille et A. Miné, ÉNS Laure Gonnord http://laure.gonnord.org/pro/teahing/ Laure.Gonnord@polyteh-lille.fr Université Lille 1 - Polyteh Lille Février 2011 1 Liste ave sentinelle 2 Struture Liste ave sentinelle Laure Gonnord (Lille1/Polyteh Lille) SD IMA S6 Variantes des listes haînées Février 2011 2 / 14 Liste ave sentinelle Listes ave sentinelle 1 Liste ave sentinelle 2 Idée : ajout d une ellule sentinelle en tête de liste : head->next pointe sur la première ellule de la liste, head->data n est pas utilisé, toutes les fontions prennent en argument un pointeur vers la sentinelle. Avantage : simplifie la gestion des as limites : as où la liste est vide, (la liste ontient toujours au moins une ellule) as où le premier élément de la liste est modifié. (head->next est modifié, pas de tête de liste à retourner) Laure Gonnord (Lille1/Polyteh Lille) SD IMA S6 Variantes des listes haînées Février 2011 3 / 14 Laure Gonnord (Lille1/Polyteh Lille) SD IMA S6 Variantes des listes haînées Février 2011 4 / 14

Liste ave sentinelle Illustration d une liste ave sentinelle head 12 43 27 9 Une ellule est toujours définie omme ei : Struture Cellule valeur : Entier suivant : pointeur de Cellule FStrut Liste ave sentinelle sur les listes ave sentinelle - 1 Fontion reerliste() :pointeur de Cellule L: p :pointeur de Cellule p (pointeur de Cellule) allouer() p.suivant Retourner p FFontion Ation insereteteliste(hd,elem) D: hd :pointeur de Cellule D: elem :Int FAtion Laure Gonnord (Lille1/Polyteh Lille) SD IMA S6 Variantes des listes haînées Février 2011 5 / 14 Liste ave sentinelle Laure Gonnord (Lille1/Polyteh Lille) SD IMA S6 Variantes des listes haînées Février 2011 6 / 14 sur les listes ave sentinelle - 2 Ation inserefinliste(hd,elem) D: hd :pointeur de Cellule D: elem :Int 1 Liste ave sentinelle 2 Struture FAtion Conaténation : f TD. Laure Gonnord (Lille1/Polyteh Lille) SD IMA S6 Variantes des listes haînées Février 2011 7 / 14 Laure Gonnord (Lille1/Polyteh Lille) SD IMA S6 Variantes des listes haînées Février 2011 / 14

Struture Struture Illustration d une liste doublement haînée Liste doublement haînée = on maintient : un pointeur vers la ellule suivante, un pointeur vers la ellule préédente. head Délaration de type ellule : Struture Cellule valeur : Entier suiv : pointeur de Cellule pre : pointeur de Cellule FStrut strut ell { strut ell* next; strut ell* ; int data; }; 12 43 27 9 head pointe vers la première ellule, ->next= pour la dernière ellule, sinon ->next-> existe ->= pour la première ellule, sinon ->->next existe Laure Gonnord (Lille1/Polyteh Lille) SD IMA S6 Variantes des listes haînées Février 2011 9 / 14 Insertion dans une liste doublement haînée - 1 Laure Gonnord (Lille1/Polyteh Lille) SD IMA S6 Variantes des listes haînées Février 2011 10 / 14 Insertion dans une liste doublement haînée - 1 Insère une ellule ave l élément elem(ii ) après. Insère une ellule ave l élément elem(ii ) après. Laure Gonnord (Lille1/Polyteh Lille) SD IMA S6 Variantes des listes haînées Février 2011 11 / 14 Laure Gonnord (Lille1/Polyteh Lille) SD IMA S6 Variantes des listes haînées Février 2011 11 / 14

Insertion dans une liste doublement haînée - 1 Insertion dans une liste doublement haînée - 1 Insère une ellule ave l élément elem(ii ) après. Insère une ellule ave l élément elem(ii ) après. Laure Gonnord (Lille1/Polyteh Lille) SD IMA S6 Variantes des listes haînées Février 2011 11 / 14 Insertion dans une liste doublement haînée - 1 Laure Gonnord (Lille1/Polyteh Lille) SD IMA S6 Variantes des listes haînées Février 2011 11 / 14 Insertion dans une liste doublement haînée - 2 Insère une ellule ave l élément elem(ii ) après. oût onstant, sans ompter le alul de, ne marhe pas pour insérer en première position, pour permettre l insertion en dernière position, on hange quoi? Laure Gonnord (Lille1/Polyteh Lille) SD IMA S6 Variantes des listes haînées Février 2011 11 / 14 Laure Gonnord (Lille1/Polyteh Lille) SD IMA S6 Variantes des listes haînées Février 2011 12 / 14

Insertion dans une liste doublement haînée -3 Insère une ellule ave l élément elem(ii ) avant next. void insere_avant(strut ell* next, int elem) { } strut ell * = mallo(...); ->data = elem; -> = next->; next-> = ; ->->next = ; ->next = next; Remarques : on a simplement inversé les mots et next, ne marhe pas pour insérer en dernière position, failement modifiable pour permettre l insertion en première position. Laure Gonnord (Lille1/Polyteh Lille) SD IMA S6 Variantes des listes haînées Février 2011 13 / 14 Comparaison des types de listes vs. listes simplement haînées : on doit maintenir deux pointeurs par ellule au lieu d un : haque opération est légèrement plus oûteuse, plus omplexe, risques de bug arus, ertaines opérations sont plus failes. (e.g., parours en arrière, insertion avant une ellule) Shéma lassique en informatique : l ajout de redondane permet des oui aluls plus rapides, au prix d une maintenane plus omplexe. Variantes : listes ave sentinelles, listes irulaires, listes ave un pointeur de fin,... Coût des listes ave pointeur de fin? Laure Gonnord (Lille1/Polyteh Lille) SD IMA S6 Variantes des listes haînées Février 2011 14 / 14