Vous êtes sur la page 1sur 12

STRUCTURES DE DONNÉES

PARTIE 1 : LISTES
- La notion de "Liste" le ses Types
- Implémenter une Liste (Tableau / Pointeurs)
- Listes Chaînées
- Listes doublement chaînées
- Les Files (Liste FIFO : First In First Out)
- Les Piles (Liste LIFO : Last In First Out)

Réalisé par : OUZEGGANE Redouane


Département de Technologie
Faculté de Technologie – Université A.Mira, Bejaia
Année Universitaire 2015/2016
NOTION D’UNE LISTE ET SES VARIANTES
 Une liste une succession d’éléments et un ensemble
d’opérations sur cette liste :
Ajouter un élément
Supprimer (La première occurrence/Toutes les
occurrences)
Modifier
Vider un liste
Concaténer deux liste
Etc.

Liste Avec Ordre (répétition / non)

Ensemble Pas d’ordre et pas de répétition


 Eléments
Files List avec prem. Arrivé prem. sortie
Piles List avec dern. Arrivé prem. sortie

1ère Année Technologie 01/11 Année Universitaire : 2015/2016


IMPLÉMENTATION D’UNE LISTE

Tableau - Cases contigües dans la R.A.M.


- Les cases sont accessibles par indice
Liste

Pointeurs - Cases dispersées dans la R.A.M.


- Cases sont liées par des pointeurs
- Un pointeur qui adresse le début de liste

RAM (Données)

1 2 3 4 … N
Elt 1 Elt 2 Elt 3 Elt 4 … Elt N

Elt 2 Elt 4
Elt 1

Elt 3
Elt N

1ère Année Technologie 02/11 Année Universitaire : 2015/2016


LISTE AVEC POINTEUR
RAM (Données)

Elt 2 Elt 4
Elt 1

Elt 3
Elt N

Liste Données Pointeur

Elt 1 Champ-1 Champ-2 … Addr.Suiv

Champ-1 Champ-2 … /

Cellule / Maillon
1ère Année Technologie 03/11 Année Universitaire : 2015/2016
LISTES CHAÎNÉES – DÉCLARATION DE TYPE
Déclaration d’un type Liste
En Algorithme En Pascal
Type Type
<ID_TYPE_LISTE>=^<ID_Type_CELL> <ID_TYPE_LISTE>=^<ID_TYPE_CELL>;
<ID_Type_CELL> = Enregistrement <ID_TYPE_CELL> = Record
<C1> : <Type_C1> <C1> : <Type_C1>
<C2> : <Type_C2> <C2> : <Type_C2>
... ... ... ...
<ID_SUIV> : <ID_TYPE_LISTE> <ID_SUIV> : <ID_TYPE_LISTE>;
Fin End;

Exemple : Liste de valeurs réels


En Algorithme En Pascal
Type Type
Liste_Reel =^ Cellule_Reel Liste_Reel =^Cellule_Reel;
Cellule_Reel = Enregistrement Cellulle_Reel = Record
valeur : Réel Valeur : Real;
suivant : Liste_Reel Suivant: Liste_Reel;
Fin End;

1ère Année Technologie 04/11 Année Universitaire : 2015/2016


LISTES CHAÎNÉES – REPRÉSENTATION
Exemple : Liste de valeurs réels
En Algorithme En Pascal
Type Type
Liste_Reel =^ Cellule_Reel Liste_Reel =^Cellule_Reel;
Cellule_Reel = Enregistrement Cellulle_Reel = Record
val : Réel val : Real;
suiv : Liste_Reel suiv: Liste_Reel;
Fin End;

Variable Var
L : Liste_Reel L : Liste_Reel;

RAM (Données)
L
/

L
@1 Val Suiv Val Suiv Val Suiv
12.5 @2 -5.5 @3 6.75 /

1ère Année Technologie 05/11 Année Universitaire : 2015/2016


LISTES CHAÎNÉES – DÉMONSTRATION

 Comment déclarer une Liste Chaînée

 Comment ajouter des éléments à cette liste

 Exercices seront traités dans les prochaines séquences

1ère Année Technologie 06/11 Année Universitaire : 2015/2016


LISTES DOUBLEMENT CHAÎNÉES

RAM (Données)

L Prec Val Suiv


@1 @1 11 @3
Prec Val Suiv
/ 12.5 @2

Prec Val Suiv


@2 35 /

1ère Année Technologie 07/11 Année Universitaire : 2015/2016


LISTES DOUBLEMENT CHAÎNÉES
Exemple : Liste de valeurs réels
En Algorithme En Pascal
Type Type
Liste_Reel =^ Cellule_Reel Liste_Reel =^Cellule_Reel;
Cellule_Reel = Enregistrement Cellulle_Reel = Record
val : Réel val : Real;
suiv : Liste_Reel suiv: Liste_Reel;
prec : Liste_Reel prec : Liste_Reel;
Fin End;

Variable Var
L : Liste_Reel L : Liste_Reel;

1ère Année Technologie 08/11 Année Universitaire : 2015/2016


PILES - FILES
 Les piles et les files sont des listes spéciales dans
lesquelles des contraintes d’ajout/suppression
d’éléments sont définies.

 Une Piles (Stack – LIFO : Last In First Out) est une


liste dans laquelle le dernier ajouté sera le premier à
enlever. Il y a deux opérations sur une Pile, à savoir :
Empiler (Push) / Dépiler (Pop)

 Une File (Queue – FIFO : First In First Out) est une


liste dans laquelle le premier ajouté sera le premier à
enlever. Il y a deux opérations sur les Files :
Enfiler (Enqueue) / Défiler (Dequeue)

1ère Année Technologie 09/11 Année Universitaire : 2015/2016


RÉSUMÉ

 Une liste, comme un type abstrait, est une succession


d’éléments, avec des opérations définies sur cette liste
(Création, Ajout, Insertion, Suppression,
Concaténation, List vide, ….)

 Une liste possède plusieurs variantes :


Liste – Ensemble – Pile – File

 Pour implémenter les listes on utilise


Tableau : Succession de cases contigües (juxtaposées)
référencés par des indices
Pointeur : cases dispersées dans la mémoire et qui sont
liées par des pointeurs.

1ère Année Technologie 10/11 Année Universitaire : 2015/2016


RÉSUMÉ

 Le principe des listes chaînées est un pointeur vers


une cellule (ou maillon) qui, avec une définition
récursive, contient un champ pointeur de type vers
une autre cellule (Récursivité de structure de
données).

 Nous pouvons, en utilisant les pointeurs, définir


plusieurs types de liste :
Listes Simplement chaînées (Listes chaînées)
Listes doublement chaînées
Piles
Files

1ère Année Technologie 11/11 Année Universitaire : 2015/2016

Vous aimerez peut-être aussi