Vous êtes sur la page 1sur 3

Algorithmique et structures de données

TD N°4 : LES LISTES CHAINEES DOUBLES

Niveau : 1ère année IM Année universitaire : 2017/2018

Exercice N°1

Soit L_DC une liste doublement chaînée d’entiers non triés.

 Définir la structure de L
 Ecrire une procédure qui ajoute un entier X au début de la liste L
 Ecrire une procédure qui ajoute un entier X à la fin de la liste L
 Ecrire une procédure qui supprime un entier X de la liste L
 Ecrire une fonction qui retourne la longueur de la liste L

Exercice N°2
Reprendre les mêmes questions de l’exercice 2 du TD3 en considérant que tous les processus gérés par
l’ordonnanceur sont stockés dans une liste doublement chaînée

Ci-dessous un exemple d’une liste contenant 4 processus (Remarque : P5 est arrivée avant P2)

nil P5 1 P2 1 P1 3 P3 4 nil

Exercice N° 3
On veut créer une structure de données que l’on nommera Liste-DC qui se présente ainsi : Liste-DC
est une structure de données constituée par des triplets. Un triplet est une cellule qui contient trois
parties. Chaque cellule dans ce cas contient deux pointeurs dont un est vers le triplet (la cellule)
suivant et un autre vers le triplet précédent, ainsi qu’un élément de type entier.
La particularité de cette liste est que le suivant du dernier élément n’est pas nil mais plutôt le premier
(tête) et que le précédent du premier élément (tête) n’est pas nil mais le dernier élément. Quand il n’y à
qu’un seul élément, il est à la fois son suivant et son précédent.
Le premier élément de la liste est défini par le pointeur Tête.
Tête

Liste avec
plusieurs
Tête éléments

Liste avec un
seul élément

1. Définir le type Liste-DC.


2. Soit une liste de type Liste-DC. Ecrire les fonctions et les procédures suivantes :
a. Procédure Créer qui permet de créer une liste vide.
b. Fonction Est-vide qui teste si la liste est vide ou non.
c. Fonction Consulter-queue qui retourne le contenu du dernier élément de la liste.
d. Procédure Ajout-tête qui permet d’ajouter un élément au début de la liste.
e. Procédure Retrait-queue qui permet de supprimer le dernier élément de la liste.

Exercice N°4 :

Partie A
Un club souhaite informatiser la gestion de ses adhérents. Les champs qui constituent la structure d'un
adhérent sont les suivants :
- NumLic : de type entier
- NomAd : de type chaîne de caractères
- PréAd : de type chaîne de caractères
- Tab : tableau[10] de tournoi qui présente la liste des tournois auxquels l’adhérent a participé.
Un adhérent peut participer à 10 tournois au maximum.

Un tournoi est caractérisé par :


- Code : entier
- NomTour : chaîne de caractères

On voudrait dans cet exercice créer et traiter une liste L simplement chaînée d’adhérents.

Num_licence Num_licence Num_licence


Nom Nom Nom
Prénom Prénom Prénom Nil
Tab Tab Tab

1. Définir le type liste_adhérents qui représente une liste simplement chaînée d'adhérents.
2. Ecrire la procédure ajouter_début(adr : adhérent, VAR L : ^liste_adhérents) qui ajoute un
adhérent adr au début de la liste L.

3. Ecrire la fonction nombre_joueurs(L : ^liste_adhérents, nom_tour : chaîne) qui retourne le


nombre de joueurs qui ont participé au tournoi dont le nom est égal à nom_tour.

4. Ecrire une procédure supprimer (VAR L : ^liste_adhérents, num : entier) qui permet de
supprimer l’adhérent dont le Numéro de licence est égal à num.

Partie B
On voudrait changer la structure de la liste L de telle façon qu’un adhérent n’a pas un nombre
maximum de participations aux tournois. La nouvelle structure est représentée comme suit :

Num_licence Num_licence Num_licence


Nom Nom Nom
Prénom Prénom Prénom
LA LA LA Nil

Code
Nom-tournoi
Nil

Code Code
Nil Nom_tournoi Nom_tournoi

Code Code Code


Nom_tournoi Nom_tournoi Nom_tournoi Nil

Nil

5. Définir les structures nécessaires pour représenter la liste d’adhérents.

6. Refaire la question 3 de la partie A.

Vous aimerez peut-être aussi