Académique Documents
Professionnel Documents
Culture Documents
données
Définition
• Une liste est une suite ordonnée d'éléments, ce qui signifie qu'à chaque
élément est associé un certain rang dans la liste (1er, 2ème, etc.).
Liste = structure
NbElem: entier
tab: tableau [1 .. Max] de type
Fin
Cette forme permet de manipuler des listes d’éléments dont on ne connaît pas le
nombre à priori.
• La taille de la liste chaînée peut varier au cours du temps (Contrairement au
tableau, la liste n'est pas allouée en une seule fois).
• chaque élément est alloué indépendamment, sous la forme d'un nœud.
• Les éléments d’une liste chaînée sont répartis dans la mémoire et reliés entre
eux par des pointeurs.
• L’ajout et la suppression des éléments d'une liste chaînée à n'importe quel
endroit, à n'importe quel instant, sans devoir recréer la liste entière, ni faire de
décalages.
nœud = structure
info: type
suivant: * nœud
fin
Liste:*nœud
Chaque élément pointe, à l'aide de l'attribut suivant, vers l'élément suivant dans la liste.
Remarques :
• Le type de l’information peut être n’importe quel type : entier, caractère, chaîne,
tableau, structure, pointeur, ...
• Dans une liste chainée, un élément ne voit qu’un seul autre élément (son suivant)
info suivant
a b c d
L noeud
Le dernier élément n'a pas de suivant, donc son attribut suivant vaut null.
début
L null
L
fin
fonction listevide(L:Liste):booléen
début
si (L=null) alors
listevide vrai
sinon L
listevide faux
fin
info suivant
procédure ajout_tete(var L:Liste , x: entier)
variable:
p:*nœud a b
début
L
allouer(p)
*p.info x p
*p.suivant L e
L p
fin
p
procédure supprimer_tete(var L:Liste)
variable: p:*nœud
début a b c
si (vide(L) alors écrire("suppression impossible")
sinon
pL L
L *p.suivant
libérer(p)
finsi
fin
Pour faciliter l'accès au dernier nœud (pour faire une insertion ou suppression en
queue...) on peut conserver un pointeur queue(ou dernier) sur la fin de la liste.
info suivant
a b c d
queue
tête
a b c d
info suivant
a b c d
entrée