ESIEE IGI-3005 TD no1 (corrigé) 2016-2017
Les listes chaînées (corrigé)
Tous les exercices sont à faire.
Pas de compte-rendu obligatoire.
Le compte-rendu du TP suivant en tiendra lieu.
1 Implémentation de liste chaînée en tableau
1.1 Principe
Une liste chaînée peut être représentée par deux tableaux, l’un (
contenu
) contenant des
valeurs et l’autre (
suivant
) contenant des indices. Le chaînage sera effectué de la façon suivante :
l’élément suivant contenu[k] aura suivant[k] comme indice dans le tableau contenu.
La liste sera l’indice dans le tableau
contenu
du premier élément. L’élément situé en fin de
liste sera associé à une valeur spéciale dans le tableau suivant (-1 par exemple).
Ainsi, la liste :
lst
'e'
'q'
'r'
't'
'w'
peut être représentée par :
lst 2
contenu suivant
0'q'3
1'w'-1
2'e'0
3'r'4
4't'1
La valeur de la tête de liste (
lst
) est l’élément n
o
2 du tableau
contenu
(
'e'
). Le suivant est
l’élément n
o
0 (
'q'
) et ainsi de suite jusqu’au dernier élément
'w'
associé à -1 indiquant la fin de
la liste.
Pour afficher la liste, on pourra utiliser l’algorithme suivant :
parcours de liste représentée par tableau
itération sur les éléments de tableau à partir de la tête
PROCÉDURE affichageListeIteratif
DONNÉES : lst ENT // la tête de la liste
DONNÉES : contenu TAB de CAR , suivant TAB de ENT
p lst
TANT QUE p 6=-1 FAIRE
afficher (contenu[p])
p suivant[p]
FIN TANT QUE
FIN PROCÉDURE
Algorithme -Affichage itératif d’une liste
–1/15–
ESIEE IGI-3005 TD no1 (corrigé) 2016-2017
Exercice 1. Écrire l’algorithme récursif de parcours de cette liste
parcours de liste représentée par tableau
affichage de la tête, affichage récursif de la suite
PROCÉDURE affichageListeRécursif
DONNÉES : lst ENT
DONNÉES : contenu TAB de CAR , suivant TAB de ENT
...
FIN PROCÉDURE
Algorithme à écrire 1-Affichage récursif d’une liste
Corrigé
***************************************************************************
parcours de liste représentée par tableau
affichage de la tête, affichage récursif de la suite
PROCÉDURE affichageListeRecursif
DONNÉES : lst ENT
DONNÉES : contenu TAB de CAR , suivant TAB de ENT
SI lst 6=-1 ALORS
afficher (contenu[lst])
affichageListeRecursif(suivant[lst])
FIN SI
FIN PROCÉDURE
Algorithme -Affichage récursif d’une liste
***************************************************************************
1.2 Ajout d’un élément en tête de liste
Soit la liste suivante :
lst 2
Mémoire de gestion de liste
contenu suivant
0'q'3
1'w'-1
2'e'0
3'r'4
4't'1
Si on ajoute un élément (par exemple 'a') en tête de liste, il faudra :
le placer dans le tableau contenu (en dernière position)
le chaîner à l’ancienne tête de liste
modifier la valeur de lst pour qu’elle indique ce nouvel élément.
–2/15–
ESIEE IGI-3005 TD no1 (corrigé) 2016-2017
Exercice 2. Faire un schéma de la configuration après insertion de 'a'en tête de liste
Corrigé
***************************************************************************
lst 5
Mémoire de gestion de liste
contenu suivant
0'q'3
1'w'-1
2'e'0
3'r'4
4't'1
5'a'2
***************************************************************************
Pour écrire l’algorithme, il est nécessaire d’avoir un marqueur indiquant la position du tableau
à laquelle une insertion peut se faire (première position non occupée) :
lst 2
Mémoire de gestion de liste
libre 5
contenu suivant
0'q'3
1'w'-1
2'e'0
3'r'4
4't'1
Exercice 3. Écrire l’algorithme de la procédure permettant d’insérer un nouvel élément
en tête de liste
C’est une procédure qui est demandée. La donnée indiquant la tête de liste doit donc être
modifiable. D’autre part, on ne se préoccupera pas de la taille réelle du tableau (considéré comme
infini)
PROCÉDURE insereEnTete
DONNÉES : c CAR
DONN. MOD. : lst ENT
DONN. MOD. : contenu TAB de CAR , suivant TAB de ENT
DONN. MOD. : libre ENT
...
FIN PROCÉDURE
Algorithme à écrire 2-Insertion en tête de liste
Corrigé
***************************************************************************
–3/15–
ESIEE IGI-3005 TD no1 (corrigé) 2016-2017
PROCÉDURE insereEnTete
DONNÉES : c CAR
DONN. MOD. : lst ENT
DONN. MOD. : contenu TAB de CAR , suivant TAB de ENT
DONN. MOD. : libre ENT
contenu[libre] c
suivant[libre] lst
lst libre
libre libre + 1
FIN PROCÉDURE
Algorithme -Insertion en tête de liste
***************************************************************************
1.3 Vider la liste
Cette opération est simple : il suffit d’indiquer que le premier emplacement libre est l’élé-
ment n
o
0 et mettre
lst
à une valeur impossible (-1). Il n’est pas nécessaire de remettre à 0 les
contenus des tableaux.
Exercice 4. Écrire l’algorithme de la procédure permettant de vider la liste et faire un
schéma de la configuration après remise à zéro de la liste
PROCÉDURE raz
DONN. MOD. : lst ENT
DONN. MOD. : libre ENT
...
FIN PROCÉDURE
Algorithme à écrire 3
Corrigé
***************************************************************************
PROCÉDURE raz
DONN. MOD. : lst ENT
DONN. MOD. : libre ENT
lst -1
libre 0
FIN PROCÉDURE
Algorithme
–4/15–
ESIEE IGI-3005 TD no1 (corrigé) 2016-2017
lst -1
Mémoire de gestion de liste
libre 0
contenu suivant
0'q'3
1'w'-1
2'e'0
3'r'4
4't'1
5'a'2
***************************************************************************
1.4 Autres opérations
Maintenir un tri sur la liste, supprimer des éléments de la liste sont des opérations possibles.
Mais si les ajouts se font systématiquement en fin de tableau, les suppressions créeront des trous
irrécupérables. La suite du TD propose une solution utilisant une liste des places libres pour
accéder aux emplacements non occupés.
2 Gestion par liste des emplacements libres
Une liste chaînée particulière permettra d’accéder aux emplacements libres.
ajouter un élément à une liste consistera à enlever un élément de la liste des places libres
et pour l’inclure dans la liste modifiée ;
supprimer un élément d’une liste consistera à l’enlever de la liste active et l’ajouter à la
liste des places libres.
2.1 Représentation mémoire
Exercice 5. À partir de la configuration initiale représentée ci-dessous, dessiner les confi-
gurations après chacune les opérations indiquées
lst -1
Mémoire de gestion de liste
libre 0
contenu suivant
0 ? 1
1 ? 2
2 ? 3
3 ? 4
4 ? 5
5 ? -1
La liste
lst
est vide (
-1
). Les éléments de ta-
bleaux disponibles sont eux mêmes dans une liste
chaînée libre commençant en 0.
–5/15–
1 / 19 100%
La catégorie de ce document est-elle correcte?
Merci pour votre participation!

Faire une suggestion

Avez-vous trouvé des erreurs dans linterface ou les textes ? Ou savez-vous comment améliorer linterface utilisateur de StudyLib ? Nhésitez pas à envoyer vos suggestions. Cest très important pour nous !