Vous êtes sur la page 1sur 2

Ministère de l’Enseignement Supérieur et de la Recherche Scientifique Université de Carthage

Institut Supérieur des Technologies de l’Information et de la Communication

Licence Génie Logiciel Sciences Informatique Niveau : 1 LGLSI

TD n°3 Liste chainées Bidirectionnelles, liste chainées circulaire


Proposé Par Mme Grira hajer

Exercice 1 : Manipulation de Liste chaînée circulaire

1. Ecrie l'algorithme de la fonction CreerListeC ( n : entier) : Pliste qui retourne un pointeur


sur le premier élément de la liste circulaire créée et comportant n entiers.
2. Ecrire l'algorithme de la procédure AjoutDeb ( var T: Pliste) qui permet d'ajouter un élément
au début de la liste circulaire de tête T.
3. Ecrire l'algorithme de la procédure AjoutFin ( var T: Pliste) qui permet d'ajouter un élément
à la fin de la liste circulaire de tête T.
4. Ecrire une procédure qui permet d'afficher les éléments d'une liste circulaire
5. Ecrire une fonction qui renvoie la longueur d'une liste chaînée circulaire.
6. Ecrire une procédure qui permet de vider une liste circulaire.

Exercice 2 : Trier une liste chaînée circulaire


Ecrire une procédure qui trie une liste chainée circulaire d’entiers :
 Les paramètres d’entrée sont une liste chaînée circulaire A contenant des entiers et une autre
liste chaînée B vide.
 Après appel de la procédure, la liste A est vide et la liste B contient tous les entiers qui
étaient précédemment dans A, mais sous forme de liste circulaire triée de la plus petite
valeur à la plus grande.
Procéder de la manière suivante : chaque entier de A sera inséré dans B à sa bonne place puis
effacé de A (c’est le tri par insertion). Il ne faut pas faire d’allocation dynamique pour créer les
éléments de B.

https://drive.google.com/open?id=0B4vjsH8LiCDsbDdDYWVZbWVVbzA
1
Exercice 3 : Liste chaînée bilatérale / bidirectionnelle / double

1. Ecrire une procédure CreerLBi qui permet de créer une liste bilatérale.
2. Ecrire une procédure AjouterTete qui permet d’ajouter un élément à la tête d’une liste
bilatérale.
3. Ecrire une procédure AjouterQueue qui permet d’ajouter un élément à la queue d’une liste
bilatérale.
4. Ecrire la fonction Rechercher qui permet de vérifier si un élément x existe dans la liste. Elle
renvoie l'adresse de l'élément de valeur X s'il existe, nil sinon..
5. Ecrire une procédure InsererApres qui permet d’insérer un élément X après un entier donné
appartenant lui aussi à la liste bilatérale.
6. Réécrire la procédure AjouterQueue en utilisant la procédure InsererApres.
7. Ecrire une procédure SupprimerVal (en utilisant la procédure Rechercher) qui permet de
supprimer un élément ayant une valeur donnée d’une liste bilatérale.
8. Ecrire une procédure SupprimerQueue qui permet de supprimer la valeur pointée par la
queue dans une liste bilatérale.
9. Ecrire une procédure ViderLBi qui permet de vider une liste bilatérale.

Exercice 4 : Listes doublement chaînées de caractères


1. Ecrire la procédure SuppVoy qui supprime la première voyelle rencontrée dans la liste
bilatérale formée de caractères.
2. Ecrire la procédure SuppToutV qui supprime toutes les voyelles dans la liste bilatérale
formée de caractères.

Exercice 5 : Liste doublement chaînée circulaire


On suppose que l’on manipule une liste doublement chaînée circulaire d’entiers.

5 8 1 15

1) écrire la procédure CreerLBC ( var t, var q : LBC, n : entier) qui permet de créer une
liste bilatérale circulaire de n caractères
2) écrire la fonction Est Palindrome qui retourne vrai si la liste bilatérale circulaire contient
une chaine de caractère palindrome ( peut être lue de gauche comme de droite)
3) écrire la procédure InverserLBC qui retourne la liste avec les éléments dans l'ordre
inverse sans effectuer de nouvelles allocations mémoires.
4) Ecrire la fonction NombreElt qui donne le nombre d’éléments de la liste.

https://drive.google.com/open?id=0B4vjsH8LiCDsbDdDYWVZbWVVbzA
2