Les structures de base Listes chainées. Listes Les listes(similaire aux tableaux) sont des structures informatiques qui permettent de garder en mémoire.

Slides:



Advertisements
Présentations similaires
Au programme du jour …. Un peu plus de structures de données
Advertisements

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
FLSI602 Génie Informatique et Réseaux
ALGORITHMES RECURSIFS
Structures de données linéaires
Cours d’Algorithmique
Structures de données et algorithmes – C5 Maria-Iuliana Dascalu, PhD
POO-L3 H. Fauconnier1 Chapitre IV 1. classe Object, clonage 2. interfaces 3. classes internes et imbriquées.
8PRO100 Éléments de programmation Allocation dynamique de la mémoire.
La fonction alloue un bloc de taille size. Il faut indiquer la taille du bloc que lon veut allouer. Le premier exemple: #include void main()
IFT-2000: Structures de Données Listes chaînées Dominic Genest, 2009.
IFT-2000: Structures de données
IFT-2000: Structures de données Les graphes Dominic Genest, 2009.
Structures de données IFT-2000
Structures de données IFT-2000
Présentation Structures de Données et TDA
Les listes chaînées par Frédérick Henri.
1 PROTOTYPE PGC++ Vecteur_3D DÉFINITION. 2 class Vecteur_3D { private : float vx, vy, vz, vw; // Représentation en coordonnées homogènes. public : Vecteur_3D();
1 La récursion. Nous avons vu qu'un programme est constitué d'un ensemble de fonctions. Il est possible pour une fonction donnée d'appeler une autre fonction.
Piles Premier arrivé, dernier servi: LIFO (Last In, First Out) Liste à usage restreint: Enlève et insère un élément seulement à un bout de la liste. Notation:
IFT-2000: Structures de données Piles et files Dominic Genest, 2009.
Structures de données IFT-2000
Structures de données IFT-10541
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.
Le langage C Structures de données
1 Exemples Construction et implantation de types de données abstraits.
Ch. PAUL - Piles et Files à l'aide de listes chainées
LES PILES ET FILES.
La fonction alloue un bloc de taille size. Il faut indiquer la taille du bloc que l’on veut allouer. Le premier exemple: #include void main()
Structures de données élémentaires dans le contexte du TP #1
ETNA – 1ème année Guillaume Belmas –
Les types composés Les enregistrements.
TABLEAUX des POINTEURS TRAITEMENT DE STRUCTURES
Tutorat en bio-informatique Le 15 novembre Exercices 1 et 2 (MAT1400) - solutions Chapitre 12.2, Analyse - concepts et contextes vol. 2 19) Calculez.
Structures de données élémentaires
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.
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.
CSI2510 Structures des Données et Algorithmes
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.
CINI – Li115 1 Semaine 9 Algorithmes de tri ● Introduction ● Tri à bulle ● - principe ● - algorithme ● - efficacité ● Tri par sélection ● - principe, algorithme,
Tableaux et Pointeurs Chaînes de Caractères Programmation Impérative II.
1 Programmation en C++ C++ de base ● Programme C++ ● Variables, objets, types ● Fonctions ● Namespace ● Tests ● Boucles ● Pointeurs, références.
Semaine 8 Retour sur les tableaux : fonctions et récursivité
Eléments d’Informatique Cours11 – Allocation dynamique, listes chaînées Catherine Recanati.
Pointeurs et langage C.
AO (Architecture des ordinateurs)
I21 Algorithmique et programmation II
Principes de programmation (suite)
SIF-1053 Architecture de ordinateurs
Tableaux à plusieurs dimensions en langage C
Piles.
L’I NSTRUCTION DE T EST A LTERNATIF Réalisé par : OUZEGGANE Redouane Département de Technologie Faculté de Technologie – Université A.Mira, Bejaia Année.
Programmation en C++ C++ de base
1 RECURSIVITE PRESENTATION Ch. PAUL ALGORITHMIQUE Présentation de la récursivité.
Bases de données sous Access. Initiation aux bases de données  Structure d’une base de données.
Programmation Android Les listes
Chapitre 3: Les listes simplement chaînées A.ABDALI MIPC/MIP S
BUFFER CIRCULAIRE Meryem EL BAKRI. PLAN Introduction Buffer circulaire Fonctionnement.
Structure de données utiles
Piles et files.
QCM Pointeurs 2 / Q1 On considère la déclaration suivante : char *ptc ; ptc peut contenir : 1) des valeurs de variables de type caractère 2) des adresses.
Les arbres généraux.
LISTES.
Présentation Chaînage dynamique Retour sur les tableaux
Listes Chaînées.
Arbre binaire.
Structure de données Les listes.
DICTIONNAIRES (MAPS).
Transcription de la présentation:

Les structures de base Listes chainées

Listes Les listes(similaire aux tableaux) sont des structures informatiques qui permettent de garder en mémoire des données en respectant un certain ordre: on peut ajouter, enlever ou consulter un élément en début ou en fin de liste, vider une liste ou savoir si elle contient un ou plusieurs éléments.

Implémentation statique d’une liste ( tableau) La liste peut être implantée à l'aide d'un tableau. Dans ce cas, il faut prévoir une taille maximum pour le tableau

Implémentation dynamique d’une liste (liste chainée) Une liste chaînée étant une succession de maillons, dont le dernier pointe vers une adresse invalide (NULL); voici une représentation possible : STRUCTURE MAILLON { Element : type Suivant :^MAILLON /*Pointeur vers le maillon suivant */ }

Implémentation dynamique d’une liste (liste chainée) Une liste chaînée est caractérisée par un pointeur tete (ou premier) vers le premier élément et un pointeur queue (ou dernier) vers le dernier élément de la liste STRUCTURE LISTE { Tete : ^ MAILLON Queue: ^ MAILLON }

Fonctions utilisées dans les listes Initialisation Ajout d'un élément Suppression d'un élément Accès à l'élément suivant Accès aux données utilisateur Accès au premier élément de la liste Accès au dernier élément de la liste Calcul de la taille de la liste Suppression de la liste entière Remarque: Le principal problème des listes simplement chaînées est l'absence de pointeur sur l'élément précédent du maillon, il est donc possible de parcourir la chaîne uniquement du début vers la fin !

implémentation d'une liste chainée struct noeud{ int objet; struct noeud *suivant; }; typedef struct liste { struct noeud *tete; } Liste;

Initialisation d’une liste Initialisé une liste c’est l’opération de rendre une liste vide: void Initialiser (liste L){ L.tete=NULL; }

Ajout d'un élément (insertion) Il y a trois façon pour insérer un élément à une liste: 1- insertion à la tête de liste: liste ajouter (liste L, int element){ noeud* new_noeud=(noeud*) malloc(sizeof(noeud)); new_noeud->objet= element; new_noeud->suivant=L.tete; L.tete=new_noeud; return l; }

Insertion d’un élément 2- insérer nouveau élément à la fin de liste : Liste inserer ( liste L, int element ) { noeud* newNoeud =(noeud*) malloc(sizeof(noeud)); newNoeud->valeur=uneValeur; newNoeud->nexte=NULL; if (L==NULL) { return newNoeud; } else { noeud* temp =L; while(temp->nexte!=NULL) { temp=temp->nexte; temp->nexte=newNoeud; return L; }

Suppression d'un élément liste supprimer (liste l, int element) { if (liste_vide(l)) { cout<<"erreur"<<endl; return l; } else { noeud* tmp1=l.tete; noeud* tmp2=NULL; while ((tmp1->objet!= element)||(tmp1->suivant!=NULL)) { tmp2=tmp1; tmp1=tmp1->suivant; } if (tmp1->objet== element) { tmp2->suivant=tmp1>suivant; } return l; }

Tester si liste est vide ou nont bool liste_vide(liste L ){ if (L.tete==NULL) return true; else return false; }

Afficher le contenu de la liste void afficher (liste L){ if (L.tete==NULL) cout<<"pile vide"<<endl; else { noeud* tmp=L.tete; cout objet while (tmp->suivant!=NULL){ cout suivant)->objet<<endl; tmp=tmp->suivant; } }

compter le nombre des éléments de la liste int longeur (Liste L) { int i=0; noeud* temp =L; while(temp!=NULL) { i++; temp=temp->nexte; } return i; }

La recherche d’un élément dans la liste Liste recherche (Liste L, int e) { noeud* temp =L; while((temp!=NULL)&&(temp->valeur!=e)) { temp=temp->nexte; } return temp; } Remarque: la fonction retourne l’adresse de l’élément, null s'il n'existe pas.

Liste doublement chaînée: A la différence des listes simplement chaînées, les maillons d'une liste doublement chaînée possèdent un pointeur sur l'élément qui les précède :