Sommaire. Structure. Liste simplement chaînée ALGORITHME ET STRUCTURES DE DONNÉES II



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

T. A. D. pile. Chapitre 7 (suite) Listes particulières. T. A. D. file. représentation chaînée de la file algorithmique. Files

Algorithmique et structures de données I

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

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

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

L exclusion mutuelle distribuée

Le langage C. Séance n 4

Les structures de données. Rajae El Ouazzani

Programmation Objet - Cours II

PROJET ALGORITHMIQUE ET PROGRAMMATION II

ARBRES BINAIRES DE RECHERCHE

INF601 : Algorithme et Structure de données

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

Cours d initiation à la programmation en C++ Johann Cuenin

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

Programmation avec des objets : Cours 7. Menu du jour

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

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

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

1 Recherche en table par balayage

Correction TD Algorithmique 5.3 Pile Liste 5.3 Pile

LES TYPES DE DONNÉES DU LANGAGE PASCAL

Cours Bases de données 2ème année IUT

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

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)

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

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

Conventions d écriture et outils de mise au point

Automatisation d'une Facture 4. Liste Déroulante Remises Case à cocher Calculs

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

Chapitre 5 : Flot maximal dans un graphe

#include <stdio.h> #include <stdlib.h> struct cell { int clef; struct cell *suiv; };

Traduction des Langages : Le Compilateur Micro Java

Algorithmes récursifs

Algorithmique, Structures de données et langage C

Introduction à MATLAB R

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

Créer une base de données

6. Hachage. Accès aux données d'une table avec un temps constant Utilisation d'une fonction pour le calcul d'adresses

PROJET 1 : BASE DE DONNÉES REPARTIES

STAGE IREM 0- Premiers pas en Python

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

Baccalauréat technologique Série : sciences et technologies du management et de la gestion (STMG)


6 - Le système de gestion de fichiers F. Boyer, UJF-Laboratoire Lig, Fabienne.Boyer@imag.fr

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

Introduction à la programmation orientée objet, illustrée par le langage C++ Patrick Cégielski

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

Les structures. Chapitre 3

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

Plateforme PAYZEN. Définition de Web-services

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

Cours d Algorithmique et de Langage C v 3.0

Capacité d un canal Second Théorème de Shannon. Théorie de l information 1/34

Plan du cours Cours théoriques. 29 septembre 2014

Algorithmique & programmation

Algorithmique et Programmation

GESTION DU LOGO. 1. Comment gérer votre logo? Format de l image Dimensions de l image Taille de l image 9

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

Travaux pratiques. Compression en codage de Huffman Organisation d un projet de programmation

Entraînement au concours ACM-ICPC

Exemples de problèmes et d applications. INF6953 Exemples de problèmes 1

Langage SQL (1) 4 septembre IUT Orléans. Introduction Le langage SQL : données Le langage SQL : requêtes

Cours A7 : Temps Réel

Correction TD algorithmique

Programmation impérative

INCORPORER EXCEL EN LIGNE DANS UN FICHIER CRÉÉ AVEC L ÉDITEUR DE TEXTE 15 avril 2015

Recherche dans un tableau

Premiers Pas en Programmation Objet : les Classes et les Objets

Les bases de données Page 1 / 8

I. MySQL : Serveur et SGBD

Programmation sous QT

Evaluation et mise en place d un serveur de messages pour Chamilo 2.0

Le Langage SQL version Oracle

POKER ET PROBABILITÉ

Algorithmique et Programmation, IMA

Dans le chapitre 1, nous associions aux fichiers ouverts des descripteurs de fichiers par lesquels nous accédions aux fichiers.

Note de cours. Introduction à Excel 2007

Manuel d utilisation. Anne RACINE. A. Racine Référence: Manuel MS Project.doc 03/03/2003 Page 1

TP Bases de données réparties

Adama MBODJI MBODJ.SYSTEM

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

Formation Excel. Introduction Les Bases du Logiciel Le comportement des cellules. Calculs élaborés. Les feuilles de calculs élaborées

Cours d Algorithmique-Programmation 2 e partie (IAP2): programmation 24 octobre 2007impérative 1 / 44 et. structures de données simples

1 CRÉER UN TABLEAU. IADE Outils et Méthodes de gestion de l information

TD/TP PAC - Programmation n 3

Système de contrôle du trafic d une ligne de métro Dossier de tests

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

Algorithme. Table des matières

PRISE EN MAIN D UN TABLEUR. Version OPEN OFFICE

Recycle Bin (Corbeille Active directory)

Pour les futurs développeurs Sommaire

Structure fonctionnelle d un SGBD

Créer un premier document avec Pages

Vérification de programmes et de preuves Première partie. décrire des algorithmes

Claude Delannoy. 3 e édition C++

Université du Québec à Chicoutimi. Département d informatique et de mathématique. Plan de cours. Titre : Élément de programmation.

Traitement des données avec Microsoft EXCEL 2010

Transcription:

Sommaire ALGORITHME ET STRUCTURES DE DONNÉES II LES LISTES Liste simplement chaînée Liste doublement chaînée Liste circulaire Dr. Jihène Tounsi ISG de Sousse Site web http://www.jihenetounsi.com Email: tounsi.jihene@yahoo.fr Liste simplement chaînée Le nombre d élément n est pas connu à la création de la liste Une structure regroupant de données de même type Les données sont chaînées entre eux par des pointeurs. Un élément de la liste pointe sur l élément suivant Le dernier élément ne pointe sur rien (Pointeur Null) Une liste est accessible seulement par sa tête Structure Déclaration d un enregistrement représentant l élément de la liste avec les attributs Nom_Pointeur:^_élément s: Un Liste qui est un pointeur sur le premier élément de la liste Liste:^_élément

Structure Exemple 1 ant = pointeur stockant l @ de l élément suivant de la liste ant @ du 1 er élément de la liste Liste = pointeur sur le premier élément de la liste ant ant ant :entier ant:^element Les opérations sur les listes chaînées Opérations de création de liste Création Liste vide Opérations d accessibilité Afficher la longueur de la liste Afficher si Liste vide ou non Retourner Tête de la liste Retourner fin de la liste Les opérations sur les listes chaînées Opérations de modification Ajout début de liste Ajout Fin de la liste Insertion à un rang donné Opérations d affichage Recherche d un élément Affichage de tous les éléments Dans ce qui suit des exemples d implémentation de quelques fonctions

Fonction CréerListeVide() :Liste :entier ant:^element Fonction CréerListeVide():Liste Retourner Null //Utilisation de la fonction dans le programme principal L CréerListeVide(); Fonction EstVide(l:Liste) :Booléen :entier ant:^element Fonction EstVide(l:Liste):Booléen Si (l ==null) alors Retourner Vrai Retourner Faux Fonction longueur(l:liste) :entier :entier ant:^element Fonction longueur(l:liste):entier P:Liste P l Si (Non(EstVide(l))) alors N 1 Tant que (P^.suivant <>null) N N+1 P P^.suivant Fin Tant que N 0 Retourner(N) Fonction Accès(l:Liste, r:entier) :Liste Fonction Accès(l:Liste, r: entier):liste P:Liste Si (1<=r et r<= longueur(l)) alors //Obtenir 1 er élément de la liste N 1 //Facultatif on peut travailler avec l directement vu que le passage se fait par valeur P l Tant que (N<R) //Accéder à l élément suivant N N+1 P P^.suivant Fin Tant que Ecrire(«rang incorrecte») P Null Retourner(P)

Autres Fonctions d accès Accès Premier élément Fonction Accès_PremierElement(l:Liste):Liste Retourner(Accès(l,1)) Accès dernier élément Fonction Accès_DernierElement(l:Liste):Liste Retourner(Accès(l,longueur(l))) Procédure Insérer(l:liste,e:entier,r: entier) Procédure Insérer(l:Liste par adresse, e:entier,r: entier) P,NC:Liste Si (1<=r et r<= longueur(l)+1) alors Si (r==1) alors //ajout début de la liste ajouter TêteListe(l,e) Si (r== longueur(l)+1) alors //ajout Fin de la liste ajouter finliste(l,e) //ajout au sein de la liste P accès(l,r-1) //Allouer Dynamiquement une nouvelle cellule Nouveau(NC) //L allocation ne peut avoir lieu que s il y a de l espace Mémoire suffisant sinon Nouveau retourne NULL Si(NC) alors NC^.donnée e NC^.suivant P^.suivant P^.suivant NC Ecrire(«Mémoire Insuffisante») Ecrire(«rang incorrecte») Procédure ajoutertêteliste(l:liste,e:entier) Procédure ajoutertêteliste(l:liste par adresse, e:entier) P,NC:Liste //Allouer Dynamiquement une nouvelle cellule Nouveau(NC) Si (NC) alors NC^.donnée e Si (Estvide(l)) alors //Créer le premier élément de la liste NC^.suivant Null l NC //Créer le premier élément de la liste et le chaîner aux restes des éléments NC^.suivant l l NC Ecrire(«Mémoire Insuffisante») Procédure ajouterfinliste(l:liste,e:entier) Procédure ajouterfinliste(l:liste par adresse, e:entier) P,NC:Liste Si (Estvide(l)) alors // le premier élément et aussi le dernier de la liste ajoutertêteliste(l,e) //Allouer Dynamiquement une nouvelle cellule Nouveau(NC) Si (NC) alors NC^.donnée e //accéder au dernier élément P accès(l,longueur(l)) //le dernier élément de la liste doit pointer sur NC P^.suivant NC //NC est maintenant le dernier élément donc il n a pas de suivant NC^.suivant null Ecrire(«Mémoire Insuffisante»)

Sommaire Liste simplement chaînée Liste doublement chaînée Liste circulaire Liste doublement chaînée C est une variante de la liste simplement chaînée Les données sont chaînées entre eux par deux pointeurs. Un élément de la liste pointe sur l élément suivant et l élément précédent Le dernier élément pointe seulement sur son prédécesseur Le premier élément pointe seulement sur son successeur Une liste est accessible par sa tête et par sa fin Structure Exemple 1 ant = pointeur stockant l @ de l élément suivant de la liste @ du 1 er élément de la liste ant = pointeur stockant l @ de l élément précédent de la liste Liste = pointeur sur le premier élément de la liste :entier :^element Prec:Liste //equivalent à ^element

Sommaire Liste simplement chaînée Liste doublement chaînée Liste circulaire Liste circulaire Même chose que la liste doublement chaînée Les données sont chaînées entre eux par deux pointeurs. Un élément de la liste pointe sur l élément suivant et l élément précédent Le dernier élément pointe sur son prédécesseur mais aussi sur le premier élément de la liste Le premier élément peut pointer seulement sur son successeur (structure 1), ou sur successeur et son prédécesseur (dernier élément de la liste) (structure 2). Structure 1 Structure 2 ant = pointeur stockant l @ de l élément suivant de la liste ant = pointeur stockant l @ de l élément précédent de la liste @ du 1 er élément de la liste Liste = pointeur sur le premier élément de la liste

Application Écrire une procédure qui permet d afficher la liste simplement chaînée de personnes. Une personne est défini par son nom, son CIN et son genre (F ou M). Fin chapitre 2 Même chose pour une liste doublement chaînée Même chose pour une liste circulaire Que peut on conclure??