Académique Documents
Professionnel Documents
Culture Documents
TP Listes Chaînées (Partie2)
TP Listes Chaînées (Partie2)
Exercice 2
On se propose de modéliser la gestion des patients dans un cabinet médical. Un patient est
caractérisé par: le nom, le prénom et un champ rdv (pour rendez-vous) de type entier
indiquant si le patient a un rendez-vous ou pas: 0 si le patient est sans rendez-vous, 1 si la
patient est avec rendez-vous.
Avant d’être consultés par le médecin, les patients sont entrés dans une salle d’attente qui sera
modélisée par une liste chaînée de patients. Une secrétaire fait entrer les patients ayant un
rdv=1 selon leur ordre d’arrivée, ensuite elle fait entrer les autres patients (ceux dont le rdv=0)
selon leur ordre d’arrivée aussi.
Dans une deuxième étape, on vous demande d’écrire les fonctions suivantes :
1. liste AjoutPatient ( liste tete, Patient P ) , qui permet d’ajouter un nouveau patient à
la fin de la liste identifiée par son pointeur tete.
2. void RendezVous ( liste tete, int *rdv, int *sansRdv ), qui compte et retourne le
nombre de patients avec reendez-vous, et le nombre de patients sans rendez-vous.
3. liste SupprimePatient ( list tete ) , qui permet de faire entrer un patient en
consultation. Cette opération est effectuée de la manière suivante : s’il n’y a aucun
patient avec rendez-vous alors c’est le premier patient de la liste qui est supprimé.
Sinon on supprime le premier patient qui a un rendez-vous.
4. void ConsulterSalleAttente ( liste tete ) , qui affiche tout d’abord les patients avec
rendez-vous, ensuite les patients sans rendez-vous.
Exercice 3 :
Dans un atelier les travaux soumis sont caractérisés par un Numéro (entier), un Code
Opération (chaine de caractères), et un Temps Opératoire (entier).
On se propose de représenter la liste des travaux sous forme d’une liste chaînée. Pour faciliter
l’exécution des travaux et minimiser le temps de préparation des machines. Les travaux de
même nature (possédant le même Code Opération) doivent se présenter en séquence (les uns
après les autres).
Questions :
1. Définir la structure de données Travail.
Définir la structure de données Cellule.
Définir le type liste comme un pointeur sur la structure Cellule.
(1pt)
1/3
Cours : Structures de Données TD N° 3-partie 2: Les Listes Chaînées
Exercices d'entraînement
Exercice 4 :
On considère une liste simplement chaînée dont les éléments sont des entiers.
1- Écrire une fonction C ajouterElement (liste l, int x) , qui ajoute un entier x en tête de la
2- Écrire une fonction C initierListe(liste l, int n) , qui initialise la liste avec n entiers
saisie au clavier.
3- Écrire une fonction C supprimerElement (liste l, int x) , qui supprime toutes les
occurrences de la valeur x d’une liste l donnée sans changer l’ordre initial, et retourne
la nouvelle liste ainsi modifiée.
4- Écrire une fonction C eliminerToutDouble (liste l) , qui élimine toutes les répétitions
de tous les éléments de la liste l donnée sans changer l’ordre initial; cette fonction
retourne également la liste modifiée. Soit par exemple la liste suivante :
1 1 2 3 1 2
1 2 3
Exercice 5
On veut gérer à travers une liste chaînée un ensemble de livres. Pour chaque livre on garde le
titre et la quantité qui indique le nombre de copie disponible.
Faite la déclaration de la structure Livre et Cellule nécessaire pour notre liste puis répondre à
ces questions:
2/3
Cours : Structures de Données TD N° 3-partie 2: Les Listes Chaînées
2. Écrire une fonction afficher qui affiche tout les Livres dans la liste.
3/3