Les listes chaînées par Frédérick Henri.

Slides:



Advertisements
Présentations similaires
La recherche de chemin optimal
Advertisements

Module Systèmes d’exploitation
GEF 243B Programmation informatique appliquée Listes chaînées I – Tableaux de structures §15.1 – 15.2.
Chap. 4 Recherche en Table
Cours Algorithmique et Analyse : Structures linéaires
Connexité.
Les Algorithmes de tri.
1 UMLV 1. Introduction 2. Hachage ouvert 3. Hachage fermé 4. Implémentation des fonctions Méthodes de hachage.
Les structures de données
Chap. 1 Structures séquentielles : listes linéaires
Algorithmique et Structures de données
Initiation à la programmation et algorithmique cours 3
Lycée Louis Vincent SEANCE 6 Python Les listes Lundi 25 novembre 2013.
Traitement Co-Séquentiel: Appariment et Fusion de Plusieurs Listes
Chapitre IV. Structures linéaires (piles, files, listes chaînées)
Références Bibliographiques
ALGORITHMES RECURSIFS
Cours 7 - Les pointeurs, l'allocation dynamique, les listes chaînées
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.
Structures de données et algorithmes – C5 Maria-Iuliana Dascalu, PhD
Algo-Prog en Ada TD6 2 MIC Romaric GUILLERM
Les structures de données arborescentes
Arbre binaire de recherche
II. Chaînage, SDD séquentielles
8PRO100 Éléments de programmation Allocation dynamique de la mémoire.
II. Chaînage, SDD séquentielles
1 GPA435 Systèmes dexploitation et programmation de système Copyright, 2001 © Julie Dufort, M. Ing. Chapitre 3 - ajout Systèmes de fichiers.
IFT-2000: Structures de Données Listes chaînées Dominic Genest, 2009.
Quest-ce quune classe dallocation? Une classe dallocation détermine la portée et la durée de vie dun objet ou dune fonction.
Les fichiers indexés (Les B-arbres)
Les pointeurs Modes d’adressage de variables. Définition d’un pointeur. Opérateurs de base. Opérations élémentaires. Pointeurs et tableaux. Pointeurs et.
Structures de données IFT-2000
Présentation Structures de Données et TDA
Table de hachage Introduction Notion de clé Fonction de hachage

Structures de données IFT-2000
326 UMLV Méthodes de classement destinées à de grandes masses de données Applicables à des fichiers séquentiels Complexité : évaluée surtout en nombre.
Pour le chemin le plus court pour tous les couples
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.
Plan cours La notion de pointeur et d’adresse mémoire.
201 UMLV  Type « dictionnaire » sous-ensembles finis de E (ordonné) avec les opérations : Ens_vide :  Ens Ajouter : Ens x Elément  Ens Enlever.
Heuristiques C. Recherche de la meilleure branche . Branch And Bound
Le langage C 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
Chapitre 6 Les traitements avancés
Algorithmes sur les sons
Tables de compilation pour le langage Z minimal Pr ZEGOUR DJAMEL EDDINE Ecole Supérieure d’Informatique (ESI)
Structures de données élémentaires dans le contexte du TP #1
Chaînage et LSC : motivation et principe Manipuler la LSC : exemples Variantes : LDC, liste circulaire, … Etude de cas : réalisation d’un buffer clavier.
II. Chaînage, SDD séquentielles
ETNA – 1ème année Guillaume Belmas –
Organisation des données Introduction à la programmation Traitements simples Affectation Parcours Définition du tableau Les Tableaux Mise en situation.
Cours LCS N°4 Présenté par Mr: LALLALI
1 Système d’exploitation Les scripts csh 1 ère Année Année Tienté HSU.
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.
1. Spoon Christophe Delagarde, septembre 1998 I.U.T., Université de la Méditerrainée 2.
1 UMLV  FICHIERS Mémoire de masse découpée en blocs Fichier :liste chaînée de blocs, ou arbre de blocs (répertoires - fichiers)‏ Bloc d’éléments Bloc.
Introduction au langage C Structures de données
8PRO107 Éléments de programmation Les tableaux. Étude de cas 1 Description du problème : Lire une liste d’entiers et l’afficher d’abord dans le même ordre.
Algorithmique Tableaux de données
 Chaînage et LSC : motivation et principe Manipuler la LSC : exemples Variantes : LDC, liste circulaire, … Etude de cas : réalisation d’un buffer clavier.
CHAPITRE 6 Les tableaux 1. Suite de composantes de même type Donc de même longueur Contiguë en mémoire Possédant un nom Donc une adresse Où chaque composante.
Introduction à la programmation (420-PK2-SL) cours 16 Gestion des applications Technologie de l’information (LEA.BW)
Chaînage et LSC : motivation et principe Manipuler la LSC : exemples Variantes : LDC, liste circulaire, … Etude de cas : réalisation d’un buffer clavier.
CSI2510 Structures des Données et Algorithmes
L'exécution d'un programme nécessite l'utilisation des ressources de l'ordinateur : temps de calcul pour exécuter les opérations, et l'occupation de la.
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.
Les structures de base Listes chainées. Listes Les listes(similaire aux tableaux) sont des structures informatiques qui permettent de garder en mémoire.
Transcription de la présentation:

Les listes chaînées par Frédérick Henri

Qu’est-ce qu’une liste chainée ? Une liste chaînée est une structure de données à l’intérieure de laquelle les objets sont ordonnés de façon linéaire. À la différence d’un tableau, où l’ordre linéaire est déterminé par les indices du tableau, l’ordre dans une liste chaînée est déterminé par un pointeur dans chacun des objets. - Introduction to algorithms / Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest, p. 204

Représentation simpliste d’une liste simplement chaînée 3 Maillon (ou nœud) Maillon (ou nœud) Maillon (ou nœud) Tête de liste Pointeur vers un nœud Pointeur vers un nœud Pointeur vers un nœud Pointeur vers un nœud Données (toutes de même type) Données (toutes de même type) Données (toutes de même type)

Caractéristiques d’une liste simplement chaînée Pour consulter le ième élément, il faut consulter les i-1 premiers éléments. L’ajout ou le retrait d’un nœud dans la liste ne nécessite le déplacement d’aucune donnée en mémoire. Les données n’ont pas besoin d’être (et ne sont probablement pas) contigües en mémoire.

Les services à offrir dans une liste chaînée Une liste chaînée devrait minimalement offrir les fonctionnalités suivantes : Création Consultation (au début, à la fin et ailleurs) Ajout (au début, à la fin et ailleurs) Retrait (au début, à la fin et ailleurs) Consultation de la longueur

Fonctionnement des différents services Les diapositives qui suivent illustrent le fonctionnement des différents services d’une liste simplement chaînée. Il existe plusieurs façon d’implanter une liste. Celle qui a été choisie pose que le premier nœud possède l’indice 0 et que le dernier nœud possède l’indice n – 1 où n est le nombre de nœuds de la liste.

Création de la liste ? ? On fait pointer la tête vers NULL. On initialise le nombre de nœuds à 0. ? ?

Consultation du ième élément SI i ≥ 0 et i < nombre de nœuds de la liste ALORS On fait pointer un pointeur sur le premier nœud. TANT QUE i > 0 BOUCLE Faire pointer le pointeur vers le prochain nœud. i  i - 1 FIN TANT QUE FINSI 26 34 12 i 1 2 3

Ajout au début de la liste On tente de créer un nouveau nœud. SI la création fut un succès ALORS On fait pointer le nouveau nœud vers le premier élément de la liste (NULL si celle-ci est vide). On initialise le nœud. On fait pointer la tête de liste sur le nouveau nœud. On incrémente le nombre de nœuds. FINSI 34 12 2 3 26

Ajout à la fin de la liste SI la liste est vide ALORS On ajoute au début de la liste SINON On tente de créer un nouveau nœud. SI la création fut un succès ALORS On positionne un pointeur sur le dernier élément de la liste (voir consulter ième élément). On initialise les champs du nouveau nœud. On fait pointer le dernier nœud sur le nouveau nœud. On incrémente le nombre de nœuds. FINSI 34 12 26 2 3

Ajout à la ième position SI i = 0 OU la liste est vide ALORS On ajoute au début de la liste SINON SI i < nombre de nœuds de la liste ALORS On tente de créer un nouveau nœud. SI la création fut un succès ALORS On positionne un pointeur sur le i-1ème nœud. On initialise les données du nouveau nœud. On fait pointer le nouveau nœud sur le ième nœud (NULL si on ajoute à la fin). On fait pointer le i-1ème nœud sur le nouveau. On incrémente le nombre de nœuds. FINSI 34 12 53 i 3 4 2 26

Retrait au début de la liste SI la liste n’est pas vide ALORS On fait pointer un pointeur sur le premier élément de la liste. On fait pointer la tête de liste sur le deuxième nœud (NULL s’il n’y avait qu’un seul nœud). On détruit le nœud pointé par le pointeur. On décrémente le nombre de nœuds. FINSI 34 12 26 2 3

Retrait à la fin de la liste SI la liste n’est pas vide ALORS SI la liste ne contient qu’un seul élément ALORS Retirer au début de la liste. SINON On fait pointer un pointeur sur l’élément à l’indice nombre de nœuds – 1. On détruit le dernier nœud. On fait pointer l’avant dernier vers NULL. On décrémente le nombre de nœuds. FINSI 34 12 26 2 3

Retrait à la ième position SI i ≥ 0 et i < nombre de nœuds de la liste ALORS SI la liste ne contient qu’un seul élément ALORS Retirer au début de la liste. SINON On fait pointer un pointeur sur l’élément à l’indice i – 1. On fait pointer un pointeur sur l’élément à l’indice i. On fait pointer le i-1ème nœud sur le i+1ème nœud (NULL si on détruit le dernier). On détruit le ième nœud. On décrémente le nombre de nœuds. FINSI 34 12 26 2 3 1

Service des Enseignements Généraux FIN Pour plus d’informations, consultez Introduction to algorithms, Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest, chapitre 11.2 Merci au Service des Enseignements Généraux