Vous êtes sur la page 1sur 1

Programmation Impérative

R. Rioboo
Année 2012-2013

Listes doublement chainées


Nous avons vu en cours, TD et TP que les listes étaient parfois difficiles à manipuler parce que certains
algorithmes s’expriment naturellement lorsqu’on part de la fin de la liste ce qui n’est pas toujours simple.
Une solution consiste à alourdir la structure de données de façon à pouvoir se déplacer en avant (c’est-
à-dire vers le prochain élément de la liste) mais aussi en arrière (c’est-à-dire vers l’élément précédent de la
liste). Comme d’habitude le cas particulier de la liste vide sera codé à l’aide du pointeur NULL.
Une liste doublement chainée non vide a donc NULL comme prédécesseur en début de liste et NULL comme
successeur en fin de liste. On peut ainsi accéder à une liste doublement chainée par n’importe lequel de ses
maillons.
Exercice 1
Donner les définitions de types nécessaire pour représenter les listes doublement chainées de chaines de
caractères.
Exercice 2
– Écrire une fonction at begining qui prend une liste doublement chainée l et retourne vrai si et seule-
ment si l est un début de liste.
– Écrire une focntion begining of qui prend en argument une liste doublement chainée l et retourne la
liste doublement chainée démarrant au début de l.
– De même écrire les fonctions at end et end of.
Exercice 3
– Écrire la fonction longueur totale qui calcule la longueur d’une liste doublement chainée.
– Écrire les fonctions longueur fin et longueur debut qui, pour une liste l calculent le nombre d’éléments
après et avant l.

Exercice 4
Écrire une fonction affiche qui affiche tous les éléments d’une liste.

Exercice 5
Écrire les fonctions ajout debut et ajout fin qui ajoutent un élément au début et à la fin d’une liste. On
pourra modifier la liste passée en argument en place et on retournera la nouvelle liste.

Exercice 6
– Écrire la fonction tab of list qui prend en argument une liste circulaire l, un tableau t alloué à une
taille maximum n et qui place les éléments de la liste l dans t.
– Écrire une fonction list of tab qui prend en paramètres un tableau t et une taille maximale n et
renvoie la liste doublement chainée contenant les éléments du tableau.
– Écrire une fonction recopie basée sur les deux fonctions précédentes.
– Écrire directement la fonction recopie ;