Explorer les Livres électroniques
Catégories
Explorer les Livres audio
Catégories
Explorer les Magazines
Catégories
Explorer les Documents
Catégories
Algorithmique et structures de
données II
(Cours 4)
1. Introduction
1.1. Limite des tableaux:
1
1. Introduction
1.2. Définition:
Une liste chaînée est un ensemble d’éléments contenus
chacun dans une cellule (ou nœud ou maillon).
1. Introduction
• Les listes doublement chaînées: Dans ces listes, les éléments sont
chaînées à l’aide de deux pointeurs, et non un seul, ce qui permet de
parcourir la liste dans les deux sens.
• Les listes circulaires: dans ces listes, le dernier élément pointe sur
le premier.
4
2
1. Introduction
Types
cellule =enregistrement
Elem: entier //valeur à stocker
Suiv: ^ cellule // adresse de l’élément suivant
Fin enregistrement
Liste= ^ cellule
Variables
L: Liste
1. Introduction
Début
ma_liste1 ←Nil
ma_liste2 ←Nil
fin
3
2. Création et affichage d’une liste
2.1. Création d’une liste chaînée:
Procédure CreationElement( Tête:Liste)
Début
Allouer (Tête)
Ecrire(" entrer un entier")
lire(Tête^. Elem)
Tête^. Suiv←Nil
Fin
Tête de
liste
Fin de liste
Elem
(Nil)
4
2. Création et affichage d’une liste
2.1. Création d’une liste chaînée:
Procédure CreationListe(n: entier, L:Liste)
Variables: Tête, P: Liste
i: entier
L
Début
CreationElement(Tête) Elem
L ←Tête
Pour i de 2 à n faire
CreationElement(P) Elem Nil
L^. Suiv ←P P
L ←P
FinPour Figure 4: Garder la tête de liste
L ←Tête 9
Fin
5
2. Création et affichage d’une liste
Dans certains cas, il faut tester si la liste est vide
Procédure affichage(L:Liste)
Début
si L = NIL alors
écrire (« liste vide »)
sinon
AffichageListe(L)
finsi
Fin
6
3. Recherche d’un élément dans un liste
Le but est de renvoyer l’adresse du premier élément trouvé ayant une
certaine valeur. On parcourt donc la liste jusqu’au bout et dès qu’on
trouve l’élément qui correspond à ce que l’on cherche, on renvoie
son adresse qui est égale à NIL si l’élément n’existe pas.
Procédure Recherche(x: entier, L:Liste, tmp: Liste)
Variables:
P: Liste
Début
P ←L tmp ←NIL
Tantque (P<>Nil) faire
si ( P ^. Elem=x) alors tmp ← P
finsi
P ← P ^. Suiv
FinTQ
fin 13
14
7
4.1. Insertion en tête de liste
Procédure AjouterEnTete(Var L:Liste, valeur: entier)
Variables:
P: Liste
Début
Allouer (P) // créer un nouvel élément
P^. Elem ← valeur //assigner la valeur au nouvel élément
P^. Suiv←L //on assigne l’adresse de l’élément suivant au
//nouvel élément
Tête de liste
L ←P
(L)
Fin
Elem Elem Nil
Elem
15
Figure 5: Principe d’insertion d’un élément en tête de liste
16
8
4.2. Insertion en fin de liste
Procédure AjouterEnFin (L:Liste, valeur: entier)
Variables:
P, t: Liste
Début
Allouer (P) // créer un nouvel élément
P^. Elem ← valeur //assigner la valeur au nouvel élément
P^. Suiv←NIL //aucun élément ne va suivre
si(L = NIL) alors
L ←P
sinon //on parcours jusqu’à la fin
t←L
TQ (t ^. Suiv <> NIL) faire
t ← t ^. Suiv
fin TQ
t ^. Suiv ←P
Fin 17
9
5.1. Suppression en tête
Tête de
liste
Elem Elem Elem Nil
10