Upload
ayari-supras-nadhmi
View
216
Download
0
Embed Size (px)
Citation preview
7/30/2019 Listes_Chainees
1/62
Structures de donnes, IMA S6Listes chanes
daprs un cours dA. Min, NS Ulm.
Laure Gonnordh t t p : / / l a u r e . g o n n o r d . o r g / p r o / t e a c h i n g /
L a u r e . G o n n o r d @ p o l y t e c h - l i l l e . f r
Universit Lille 1 - Polytech Lille
Fvrier 2011
http://localhost/var/www/apps/conversion/tmp/scratch_6/[email protected]://laure.gonnord.org/pro/teaching/7/30/2019 Listes_Chainees
2/62
Plan
1 Introduction
2 Listes simplement chanes
StructureOprations
3 Divers sur les listes chanes
Laure Gonnord (Lille1/Polytech) Structures de donnes IMA S6 Listes Chanes Fvrier 2011 2 / 36
7/30/2019 Listes_Chainees
3/62
Introduction
1 Introduction
2 Listes simplement chanes
3 Divers sur les listes chanes
Laure Gonnord (Lille1/Polytech) Structures de donnes IMA S6 Listes Chanes Fvrier 2011 3 / 36
7/30/2019 Listes_Chainees
4/62
Introduction
Pourquoi ?
Rappel : la liste contigu.
t y p e d e f s t r u c t D i s t r i b u t i o n {
i n t d e r n p e r s ;
c h a r l i s t p e r s [ M A X N U M P E R S ] [ T A I L L E N O M ] ;
} D i s t r i b u t i o n ;
Complexit en nombre de cases vues :
Impression
RechercheInsertion dans le cas dune liste non pleine
Laure Gonnord (Lille1/Polytech) Structures de donnes IMA S6 Listes Chanes Fvrier 2011 4 / 36
7/30/2019 Listes_Chainees
5/62
Introduction
Pourquoi ? - 2
Hypothse supplmentaire : liste contigu trie
Impression
Recherche
Insertion dans le cas dune liste non pleine
Laure Gonnord (Lille1/Polytech) Structures de donnes IMA S6 Listes Chanes Fvrier 2011 5 / 36
I d i
7/30/2019 Listes_Chainees
6/62
Introduction
Pourquoi ? - 3
Et si la liste contigu est pleine ? on ralloue.
La liste chane va nous donner un moyen de grerlallocation case par case (de manire non contigu).
Laure Gonnord (Lille1/Polytech) Structures de donnes IMA S6 Listes Chanes Fvrier 2011 6 / 36
I t d ti
7/30/2019 Listes_Chainees
7/62
Introduction
Notations algorithmiquesPointeurs :p : pointeur de Entier (pointeur)p (valeur pointe)
Allocation/Libration de mmoire :Fonction
a l l o u e r ( ) renvoie un pointeur vers une nouvelle
cellule alloueActionl i b e r e r ( P )
rcupre la cellule mmoire pointe parP.
Structures :Structure pointComplexe
x : Entiery : Entier
FStruct
pc : pointComplexe (dclaration)pc.x, pc.y (pour les accs)
Laure Gonnord (Lille1/Polytech) Structures de donnes IMA S6 Listes Chanes Fvrier 2011 7 / 36
Listes simplement chanes
7/30/2019 Listes_Chainees
8/62
Listes simplement chanes
1 Introduction
2 Listes simplement chanesStructure
Oprations
3 Divers sur les listes chanes
Laure Gonnord (Lille1/Polytech) Structures de donnes IMA S6 Listes Chanes Fvrier 2011 8 / 36
Listes simplement chanes Structure
7/30/2019 Listes_Chainees
9/62
Listes simplement chanes Structure
Principe
Liste = squence ordonne dlments de mme type.
Exemple : liste dentiers (12, 43, 27, 9).
lordre des lments compte : (12, 43, 27, 9) = (12, 27, 43, 9)
la multiplicit des lments compte(12, 43, 27, 9) = (12, 43, 27, 9, 9)
Liste simplement chane =
reprsentation o chaque lment pointe sur le suivant.
943 2712
Laure Gonnord (Lille1/Polytech) Structures de donnes IMA S6 Listes Chanes Fvrier 2011 9 / 36
Listes simplement chanes Structure
7/30/2019 Listes_Chainees
10/62
Listes simplement chanes Structure
Reprsentation des listes - 1
Exemple : cellule de liste dentiers :
Structure Cellulevaleur : Entiersuivant : pointeur de Cellule
FStruct
v a l e u r est le contenu de la cellule, (ici, un entier)
s u i v a n t pointe vers la cellule suivante,
ou vautN U L L
(fin de liste).Le type de
c e l l est rcursif (autorfrentiel).
Laure Gonnord (Lille1/Polytech) Structures de donnes IMA S6 Listes Chanes Fvrier 2011 10 / 36
Listes simplement chanes Structure
7/30/2019 Listes_Chainees
11/62
Listes simplement chanes Structure
Reprsentation des listes - 2
Implantation en C dune liste dentiers :structure de cellule pour reprsenter un lment.
t y p e d e f s t r u c t {
C e l l * n e x t ;
i n t d a t a ;
} C e l l ;
d a t a est le contenu de la cellule, (ici, un entier)
n e x t pointe vers la cellule suivante,ou vaut
N U L L (fin de liste).
Laure Gonnord (Lille1/Polytech) Structures de donnes IMA S6 Listes Chanes Fvrier 2011 11 / 36
Listes simplement chanes Structure
7/30/2019 Listes_Chainees
12/62
Listes simplement chanes Structure
Reprsentation des listes - 3
Une liste est reprsente par un pointeur de tte C e l l *
= pointeur sur la premire cellule.
12 43 27 9
head
NULL
Tous les lments sont accessibles depuis la tte de liste.
Par convention,h e a d
vautN U L L
si la liste est vide.
Laure Gonnord (Lille1/Polytech) Structures de donnes IMA S6 Listes Chanes Fvrier 2011 12 / 36
Listes simplement chanes Oprations
7/30/2019 Listes_Chainees
13/62
stes s p e e t c a es Op at o s
Oprations sur les listes
Structure de donnes = type + algorithmes de manipulation.On va dvelopper des fonctions pour les oprations suivantes :
calcul de la longueur dune liste,
recherche dun lment,insertion dun lment,
suppression dun lment,
concatnation de deux listes,
destruction dune liste.
Toutes nos fonctions prennent une tte de liste en argument.
Laure Gonnord (Lille1/Polytech) Structures de donnes IMA S6 Listes Chanes Fvrier 2011 13 / 36
Listes simplement chanes Oprations
7/30/2019 Listes_Chainees
14/62
p p
Calcul de la longueur dune liste - 1
Principe : on suit les pointeurs n e x t jusqu rencontrer N U L L et on compte le nombre de cellules rencontres.
12 43 27 9
head
NULL
c 0i
Laure Gonnord (Lille1/Polytech) Structures de donnes IMA S6 Listes Chanes Fvrier 2011 14 / 36
Listes simplement chanes Oprations
7/30/2019 Listes_Chainees
15/62
p p
Calcul de la longueur dune liste - 1
Principe : on suit les pointeurs n e x t jusqu rencontrer N U L L et on compte le nombre de cellules rencontres.
12 43 27 9
head
NULL
c i 1
Laure Gonnord (Lille1/Polytech) Structures de donnes IMA S6 Listes Chanes Fvrier 2011 14 / 36
Listes simplement chanes Oprations
7/30/2019 Listes_Chainees
16/62
Calcul de la longueur dune liste - 1
Principe : on suit les pointeurs n e x t jusqu rencontrer N U L L et on compte le nombre de cellules rencontres.
12 43 27 9
head
NULL
c i 2
Laure Gonnord (Lille1/Polytech) Structures de donnes IMA S6 Listes Chanes Fvrier 2011 14 / 36
Listes simplement chanes Oprations
7/30/2019 Listes_Chainees
17/62
Calcul de la longueur dune liste - 1
Principe : on suit les pointeurs n e x t jusqu rencontrer N U L L et on compte le nombre de cellules rencontres.
12 43 27 9
head
NULL
c i 3
Laure Gonnord (Lille1/Polytech) Structures de donnes IMA S6 Listes Chanes Fvrier 2011 14 / 36
Listes simplement chanes Oprations
7/30/2019 Listes_Chainees
18/62
Calcul de la longueur dune liste - 1
Principe : on suit les pointeurs n e x t jusqu rencontrer N U L L et on compte le nombre de cellules rencontres.
12 43 27 9
head
NULL
c iNULL 4
Laure Gonnord (Lille1/Polytech) Structures de donnes IMA S6 Listes Chanes Fvrier 2011 14 / 36
Listes simplement chanes Oprations
7/30/2019 Listes_Chainees
19/62
Calcul de la longueur dune liste - 2
crire la fonction en C (TP)
Laure Gonnord (Lille1/Polytech) Structures de donnes IMA S6 Listes Chanes Fvrier 2011 15 / 36
Listes simplement chanes Oprations
7/30/2019 Listes_Chainees
20/62
Recherche dun lment
Spcification : renvoiet r u e
si la liste contient un lmentgal
e l e m ,
f a l s e sinon.
Principe on suit les pointeursn e x t
jusqu rencontrerN U L L
ou llement.
Laure Gonnord (Lille1/Polytech) Structures de donnes IMA S6 Listes Chanes Fvrier 2011 16 / 36
Listes simplement chanes Oprations
7/30/2019 Listes_Chainees
21/62
Rappels sur la mmoire dynamique
Pour plus de flexibilit, les cellules sont alloues
dynamiquement.
# i n c l u d e < s t d l i b . h >
v o i d * m a l l o c ( s i z e _ t s i z e ) ;
v o i d f r e e ( v o i d * p t r ) ;
Effet :
m a l l o c alloue sur le tas un bloc de
s i z e octets, renvoie un
pointeur non typ vers la zone alloue. Faire un cast !
f r e e libre le bloc,
le bloc est accessible uniquement par pointeur.
Allouer dynamiquement un tableau de 50 entiers ?
Laure Gonnord (Lille1/Polytech) Structures de donnes IMA S6 Listes Chanes Fvrier 2011 17 / 36
Listes simplement chanes Oprations
7/30/2019 Listes_Chainees
22/62
Cration dune liste (exemple ne pas suivre)
Pour construire/allouer la liste : (12, 43, 27, 9) :
C e l l * h e a d ;
h e a d = ( C e l l * ) m a l l o c ( s i z e o f ( C e l l ) ) ;
h e a d - > d a t a = 1 2 ;
h e a d - > n e x t = m a l l o c ( s i z e o f ( C e l l ) ) ;
h e a d - > n e x t - > d a t a = 4 3 ;
h e a d - > n e x t - > n e x t = m a l l o c ( s i z e o f ( C e l l ) ) ;
h e a d - > n e x t - > n e x t - > d a t a = 2 7 ;
h e a d - > n e x t - > n e x t - > n e x t = m a l l o c ( s i z e o f ( C e l l ) ) ;
h e a d - > n e x t - > n e x t - > n e x t - > d a t a = 9 ;
h e a d - > n e x t - > n e x t - > n e x t - > n e x t = N U L L ;
Peu pratique. On prfre construire une liste par insertionssuccessives.
Laure Gonnord (Lille1/Polytech) Structures de donnes IMA S6 Listes Chanes Fvrier 2011 18 / 36
Listes simplement chanes Oprations
7/30/2019 Listes_Chainees
23/62
Insertion en tte de liste - Principe
C e l l * h e a d = N U L L ;
h e a d = i n s e r e ( h e a d , 9 ) ;
h e a d = i n s e r e ( h e a d , 2 7 ) ;
h e a d = i n s e r e ( h e a d , 4 3 ) ;
h e a d = i n s e r e ( h e a d , 1 2 ) ;
head
NULL
Laure Gonnord (Lille1/Polytech) Structures de donnes IMA S6 Listes Chanes Fvrier 2011 19 / 36
Listes simplement chanes Oprations
7/30/2019 Listes_Chainees
24/62
Insertion en tte de liste - Principe
C e l l * h e a d = N U L L ;
h e a d = i n s e r e ( h e a d , 9 ) ;
h e a d = i n s e r e ( h e a d , 2 7 ) ;
h e a d = i n s e r e ( h e a d , 4 3 ) ;
h e a d = i n s e r e ( h e a d , 1 2 ) ;
9
NULL
h
NULL
c
Laure Gonnord (Lille1/Polytech) Structures de donnes IMA S6 Listes Chanes Fvrier 2011 19 / 36
Listes simplement chanes Oprations
7/30/2019 Listes_Chainees
25/62
Insertion en tte de liste - Principe
C e l l * h e a d = N U L L ;
h e a d = i n s e r e ( h e a d , 9 ) ;
h e a d = i n s e r e ( h e a d , 2 7 ) ;
h e a d = i n s e r e ( h e a d , 4 3 ) ;
h e a d = i n s e r e ( h e a d , 1 2 ) ;
9
NULL
head
Laure Gonnord (Lille1/Polytech) Structures de donnes IMA S6 Listes Chanes Fvrier 2011 19 / 36
Listes simplement chanes Oprations
7/30/2019 Listes_Chainees
26/62
Insertion en tte de liste - Principe
C e l l * h e a d = N U L L ;
h e a d = i n s e r e ( h e a d , 9 ) ;
h e a d = i n s e r e ( h e a d , 2 7 ) ;
h e a d = i n s e r e ( h e a d , 4 3 ) ;
h e a d = i n s e r e ( h e a d , 1 2 ) ;
27 9
NULL
c h
Laure Gonnord (Lille1/Polytech) Structures de donnes IMA S6 Listes Chanes Fvrier 2011 19 / 36
Listes simplement chanes Oprations
7/30/2019 Listes_Chainees
27/62
Insertion en tte de liste - Principe
C e l l * h e a d = N U L L ;
h e a d = i n s e r e ( h e a d , 9 ) ;
h e a d = i n s e r e ( h e a d , 2 7 ) ;
h e a d = i n s e r e ( h e a d , 4 3 ) ;
h e a d = i n s e r e ( h e a d , 1 2 ) ;
27 9
NULL
head
Laure Gonnord (Lille1/Polytech) Structures de donnes IMA S6 Listes Chanes Fvrier 2011 19 / 36
Listes simplement chanes Oprations
7/30/2019 Listes_Chainees
28/62
Insertion en tte de liste - Principe
C e l l * h e a d = N U L L ;
h e a d = i n s e r e ( h e a d , 9 ) ;
h e a d = i n s e r e ( h e a d , 2 7 ) ;
h e a d = i n s e r e ( h e a d , 4 3 ) ;
h e a d = i n s e r e ( h e a d , 1 2 ) ;
43 27 9
NULL
c h
Laure Gonnord (Lille1/Polytech) Structures de donnes IMA S6 Listes Chanes Fvrier 2011 19 / 36
Listes simplement chanes Oprations
7/30/2019 Listes_Chainees
29/62
Insertion en tte de liste - Principe
C e l l * h e a d = N U L L ;
h e a d = i n s e r e ( h e a d , 9 ) ;
h e a d = i n s e r e ( h e a d , 2 7 ) ;
h e a d = i n s e r e ( h e a d , 4 3 ) ;
h e a d = i n s e r e ( h e a d , 1 2 ) ;
43 27 9
NULL
head
Laure Gonnord (Lille1/Polytech) Structures de donnes IMA S6 Listes Chanes Fvrier 2011 19 / 36
Listes simplement chanes Oprations
7/30/2019 Listes_Chainees
30/62
Insertion en tte de liste - Principe
C e l l * h e a d = N U L L ;
h e a d = i n s e r e ( h e a d , 9 ) ;
h e a d = i n s e r e ( h e a d , 2 7 ) ;
h e a d = i n s e r e ( h e a d , 4 3 ) ;
h e a d = i n s e r e ( h e a d , 1 2 ) ;
c h
12 43 27 9
NULL
Laure Gonnord (Lille1/Polytech) Structures de donnes IMA S6 Listes Chanes Fvrier 2011 19 / 36
Listes simplement chanes Oprations
7/30/2019 Listes_Chainees
31/62
Insertion en tte de liste - Principe
C e l l * h e a d = N U L L ;
h e a d = i n s e r e ( h e a d , 9 ) ;
h e a d = i n s e r e ( h e a d , 2 7 ) ;
h e a d = i n s e r e ( h e a d , 4 3 ) ;
h e a d = i n s e r e ( h e a d , 1 2 ) ;
head
12 43 27 9
NULL
Laure Gonnord (Lille1/Polytech) Structures de donnes IMA S6 Listes Chanes Fvrier 2011 19 / 36
Listes simplement chanes Oprations
7/30/2019 Listes_Chainees
32/62
Insertion en tte de liste - Principe
C e l l * h e a d = N U L L ;
h e a d = i n s e r e ( h e a d , 9 ) ;
h e a d = i n s e r e ( h e a d , 2 7 ) ;
h e a d = i n s e r e ( h e a d , 4 3 ) ;
h e a d = i n s e r e ( h e a d , 1 2 ) ;
head
12 43 27 9
NULL
Remarques :
la liste est dans lordre inverse de celui desinsertions,
i n s e r e fonctionne sur une liste vide ou non-vide,la tte de liste est modifie chaque insertion,
le cot dune insertion est constant.
Laure Gonnord (Lille1/Polytech) Structures de donnes IMA S6 Listes Chanes Fvrier 2011 19 / 36
7/30/2019 Listes_Chainees
33/62
Listes simplement chanes Oprations
7/30/2019 Listes_Chainees
34/62
Insertion en queue de liste
Deux cas considrer :
liste vide : on fait pointer la tte de liste sur la nouvellecellule,
liste non vide : on fait pointer le champ n e x t de la dernirecellule sur la nouvelle cellule.
liste vide liste non vide
NULL
head
NULL
head
Laure Gonnord (Lille1/Polytech) Structures de donnes IMA S6 Listes Chanes Fvrier 2011 21 / 36
Listes simplement chanes Oprations
7/30/2019 Listes_Chainees
35/62
Insertion en queue de liste
Deux cas considrer :
liste vide : on fait pointer la tte de liste sur la nouvellecellule,
liste non vide : on fait pointer le champ n e x t de la dernirecellule sur la nouvelle cellule.
liste vide liste non vide
NULLNULL
head
NULL
head
Laure Gonnord (Lille1/Polytech) Structures de donnes IMA S6 Listes Chanes Fvrier 2011 21 / 36
Listes simplement chanes Oprations
E l di i d li
7/30/2019 Listes_Chainees
36/62
Exemple dinsertion en queue de liste
C e l l * h e a d = N U L L ;
h e a d = i n s e r e ( h e a d , 1 2 ) ;
h e a d = i n s e r e ( h e a d , 4 3 ) ;
h e a d = i n s e r e ( h e a d , 2 7 ) ;
h e a d = i n s e r e ( h e a d , 9 ) ;
12
head
c
NULL
NULL
Laure Gonnord (Lille1/Polytech) Structures de donnes IMA S6 Listes Chanes Fvrier 2011 22 / 36
Listes simplement chanes Oprations
E l di ti d li t
7/30/2019 Listes_Chainees
37/62
Exemple dinsertion en queue de liste
C e l l * h e a d = N U L L ;
h e a d = i n s e r e ( h e a d , 1 2 ) ;
h e a d = i n s e r e ( h e a d , 4 3 ) ;
h e a d = i n s e r e ( h e a d , 2 7 ) ;
h e a d = i n s e r e ( h e a d , 9 ) ;
12
head
43
NULL
l
c
Laure Gonnord (Lille1/Polytech) Structures de donnes IMA S6 Listes Chanes Fvrier 2011 22 / 36
7/30/2019 Listes_Chainees
38/62
Listes simplement chanes Oprations
E m l di ti d li t
7/30/2019 Listes_Chainees
39/62
Exemple dinsertion en queue de liste
C e l l * h e a d = N U L L ;
h e a d = i n s e r e ( h e a d , 1 2 ) ;
h e a d = i n s e r e ( h e a d , 4 3 ) ;
h e a d = i n s e r e ( h e a d , 2 7 ) ;
h e a d = i n s e r e ( h e a d , 9 ) ;
12 9
NULL
head c
2743
l
Laure Gonnord (Lille1/Polytech) Structures de donnes IMA S6 Listes Chanes Fvrier 2011 22 / 36
Listes simplement chanes Oprations
Exemple dinsertion en queue de liste
7/30/2019 Listes_Chainees
40/62
Exemple d insertion en queue de liste
C e l l * h e a d = N U L L ;
h e a d = i n s e r e ( h e a d , 1 2 ) ;
h e a d = i n s e r e ( h e a d , 4 3 ) ;
h e a d = i n s e r e ( h e a d , 2 7 ) ;
h e a d = i n s e r e ( h e a d , 9 ) ;
12 9
NULL
head c
2743
l
Remarques :
la liste est dans le mme ordre que celui des
insertions,la tte de liste nest modifie que lors de la premireinsertion,
le cot dune insertion est linaire, O(n)
Laure Gonnord (Lille1/Polytech) Structures de donnes IMA S6 Listes Chanes Fvrier 2011 22 / 36
7/30/2019 Listes_Chainees
41/62
Listes simplement chanes Oprations
Cot de construction dune liste
7/30/2019 Listes_Chainees
42/62
Cot de construction d une liste
Pour construire une liste n lments :
Par ajout en tte de liste : O(n
)mais ordre inverse !
par ajout en queue de liste : O(n2)
Laure Gonnord (Lille1/Polytech) Structures de donnes IMA S6 Listes Chanes Fvrier 2011 24 / 36
Listes simplement chanes Oprations
Insertion aprs un lment 1
7/30/2019 Listes_Chainees
43/62
Insertion aprs un lment - 1
Spcification :Insre un lment dans une liste , laide dun pointeurvers la cellule prcdente.
pred
Laure Gonnord (Lille1/Polytech) Structures de donnes IMA S6 Listes Chanes Fvrier 2011 25 / 36
Listes simplement chanes Oprations
Insertion aprs un lment - 1
7/30/2019 Listes_Chainees
44/62
Insertion aprs un lment - 1
Spcification :Insre un lment dans une liste , laide dun pointeurvers la cellule prcdente.
elem
c
pred
Laure Gonnord (Lille1/Polytech) Structures de donnes IMA S6 Listes Chanes Fvrier 2011 25 / 36
Listes simplement chanes Oprations
Insertion aprs un lment - 1
7/30/2019 Listes_Chainees
45/62
Insertion aprs un lment - 1
Spcification :Insre un lment dans une liste , laide dun pointeurvers la cellule prcdente.
elem
c
pred
Laure Gonnord (Lille1/Polytech) Structures de donnes IMA S6 Listes Chanes Fvrier 2011 25 / 36
Listes simplement chanes Oprations
Insertion aprs un lment - 1
7/30/2019 Listes_Chainees
46/62
Insertion aprs un lment 1
Spcification :Insre un lment dans une liste , laide dun pointeurvers la cellule prcdente.
elem
c
pred
Laure Gonnord (Lille1/Polytech) Structures de donnes IMA S6 Listes Chanes Fvrier 2011 25 / 36
Listes simplement chanes Oprations
Insertion aprs un lment - 1
7/30/2019 Listes_Chainees
47/62
Insertion aprs un lment 1
Spcification :Insre un lment dans une liste , laide dun pointeurvers la cellule prcdente.
Notes :
cot constant, hors calcul dep r e d
,
p r e d peut tre obtenu par une variante de
r e c h e r c h e
(par exemple si on cherche insrer dans une listetrie) cf TP,
on suppose quon ninsre pas en premire position.( on suppose que la liste nest pas vide)
Laure Gonnord (Lille1/Polytech) Structures de donnes IMA S6 Listes Chanes Fvrier 2011 25 / 36
Listes simplement chanes Oprations
Insertion aprs un lment - 2
7/30/2019 Listes_Chainees
48/62
Insertion aprs un lment 2
Linsertion avant une cellule donne est plus complexe...
Laure Gonnord (Lille1/Polytech) Structures de donnes IMA S6 Listes Chanes Fvrier 2011 26 / 36
Listes simplement chanes Oprations
Suppression dun lment - 1
7/30/2019 Listes_Chainees
49/62
Suppression d un lment 1
Spcification :Supprime une cellule de la liste , laide dun pointeurvers la cellule prcdente.
pred c
Laure Gonnord (Lille1/Polytech) Structures de donnes IMA S6 Listes Chanes Fvrier 2011 27 / 36
Listes simplement chanes Oprations
Suppression dun lment - 1
7/30/2019 Listes_Chainees
50/62
Suppression d un lment 1
Spcification :Supprime une cellule de la liste , laide dun pointeurvers la cellule prcdente.
pred c
Laure Gonnord (Lille1/Polytech) Structures de donnes IMA S6 Listes Chanes Fvrier 2011 27 / 36
Listes simplement chanes Oprations
Suppression dun lment - 1
7/30/2019 Listes_Chainees
51/62
pp
Spcification :Supprime une cellule de la liste , laide dun pointeurvers la cellule prcdente.
pred
Laure Gonnord (Lille1/Polytech) Structures de donnes IMA S6 Listes Chanes Fvrier 2011 27 / 36
Listes simplement chanes Oprations
Suppression dun lment - 1
7/30/2019 Listes_Chainees
52/62
pp
Spcification :Supprime une cellule de la liste , laide dun pointeurvers la cellule prcdente.
Notes :
cot constant, hors calcul dep r e d
,
on suppose quon ne dtruit pas en premire position,( on suppose que la liste nest pas vide)
on suppose quep r e d
a un suivant,(p r e d - > n e x t =N U L L )(on peut par contre avoir
c - > n e x t = N U L L ).
Laure Gonnord (Lille1/Polytech) Structures de donnes IMA S6 Listes Chanes Fvrier 2011 27 / 36
Listes simplement chanes Oprations
Suppression dun lment - 2
7/30/2019 Listes_Chainees
53/62
pp
Il reste faire la version suppression complte .
Laure Gonnord (Lille1/Polytech) Structures de donnes IMA S6 Listes Chanes Fvrier 2011 28 / 36
Listes simplement chanes Oprations
Suppression dun lment - 3
7/30/2019 Listes_Chainees
54/62
pp
Spcification :supprime le premier lment gal
e l e m dans la liste si il existe.
calcule automatiquementp r e d
,gre les cas limites :
liste vide, liste un seul lment,e l e m en tte ou en fin de liste,e l e m non prsent dans la liste,
la tte de liste peut changer,
cot linaire au pire, cause de la recherche dep r e d
.
Laure Gonnord (Lille1/Polytech) Structures de donnes IMA S6 Listes Chanes Fvrier 2011 29 / 36
Listes simplement chanes Oprations
Suppression dun lment - 4
7/30/2019 Listes_Chainees
55/62
Laure Gonnord (Lille1/Polytech) Structures de donnes IMA S6 Listes Chanes Fvrier 2011 30 / 36
Listes simplement chanes Oprations
Concatnation de listes
7/30/2019 Listes_Chainees
56/62
1212 43 27
head1
NULL
head2
27
NULL
c
Cf TD.
Laure Gonnord (Lille1/Polytech) Structures de donnes IMA S6 Listes Chanes Fvrier 2011 31 / 36
7/30/2019 Listes_Chainees
57/62
Listes simplement chanes Oprations
Destruction totale dune liste
7/30/2019 Listes_Chainees
58/62
Directement en C :
v o i d d e t r u i t ( C e l l * h e a d )
{
C e l l * c ;
w h i l e ( h e a d ) {
c = h e a d - > n e x t ;
f r e e ( h e a d ) ;
h e a d = c ;
}
}
Cot?
Laure Gonnord (Lille1/Polytech) Structures de donnes IMA S6 Listes Chanes Fvrier 2011 32 / 36
Divers sur les listes chanes
7/30/2019 Listes_Chainees
59/62
1 Introduction
2 Listes simplement chanes
3 Divers sur les listes chanes
Laure Gonnord (Lille1/Polytech) Structures de donnes IMA S6 Listes Chanes Fvrier 2011 33 / 36
Divers sur les listes chanes
Erreurs courantes sur les listes
7/30/2019 Listes_Chainees
60/62
Erreurs courantes sur les pointeurs et la mmoiredynamique :
drfrencer un pointeur N U L L ,utiliser un bloc aprs lavoir libr,librer deux fois le mme bloc,oublier de librer un bloc (fuites de mmoire).
Introduction de cycles :
(gnre des boucles infinies lors des parcours,cause des fuites de mmoire, . . . )
Laure Gonnord (Lille1/Polytech) Structures de donnes IMA S6 Listes Chanes Fvrier 2011 34 / 36
Divers sur les listes chanes
Erreurs courantes sur les listes
7/30/2019 Listes_Chainees
61/62
Partage de cellules entre plusieurs listes :
(effets de bord lors de la modification dune liste,cause des librations multiples de blocs, . . . )
Oubli des cas limites :liste vide, listes un lment,insertion/suppression en premire/dernire position,etc.
Laure Gonnord (Lille1/Polytech) Structures de donnes IMA S6 Listes Chanes Fvrier 2011 35 / 36
7/30/2019 Listes_Chainees
62/62