Les listes chaînées 1 Implémentation de liste chaînée en tableau

ESIEE IGI-3005 TD no1 2016-2017
Les listes chaînées
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/8–
ESIEE IGI-3005 TD no1 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
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.
Exercice 2. Faire un schéma de la configuration après insertion de 'a'en tête de liste
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
–2/8–
ESIEE IGI-3005 TD no1 2016-2017
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
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
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.
–3/8–
ESIEE IGI-3005 TD no1 2016-2017
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.
ajouter '2'en tête de liste ;
ajouter 'x'en tête de liste ;
ajouter 'T'en tête de liste ;
supprimer 'x'de la liste ;
ajouter 'S'en tête de liste ;
ajouter '0'après 'T'.
2.2 Initialisation de la mémoire de gestion de liste
On notera Tla taille des tableaux contenu et suivant.
Exercice 6. Écrire l’algorithme d’initialisation permettant d’obtenir la configuration sui-
vante :
Mémoire de gestion de liste
libre 0
contenu suivant
0 ? 1
1 ? 2
2 ? 3
3 ? 4
4 ? 5
5 ? -1
–4/8–
ESIEE IGI-3005 TD no1 2016-2017
initialise le tableau
suivant
en chaînant chaque élément à son suivant, le dernier étant chaîné
à -1. Initialise la chaîne libre à 0
itération classique
PROCÉDURE init
DONN. MOD. : suivant TAB de ENT
DONN. MOD. : libre ENT
DONNÉES : T ENT
....
FIN PROCÉDURE
Algorithme à écrire 4-Initialisation de la mémoire de gestion de liste
2.3 Allocation d’une place libre
Demander une place pour écrire un nouvel élément nécessite de consulter la liste des places
libres et retourner une place libre (le plus simple étant d’en retourner la tête de liste). Il conviendra
de supprimer cette place de la liste des places libres.
Exercice 7. Écrire l’algorithme d’allocation de place
retourne le n
o
du premier élément libre du tableau et met à jour la tête de liste des éléments
libres
FONCTION allouePlace
DONN. MOD. : suivant TAB de ENT
DONN. MOD. : libre ENT
RÉSULTAT : ENT
....
FIN FONCTION
Algorithme à écrire 5-Réservation d’une place dans le tableau
2.4 Libération d’une place occupée
De même, si on ne désire plus se servir d’une place, il conviendra de l’ajouter à la liste des
places libres place pour la rendre disponible en cas de nouvelle allocation.
Exercice 8. Écrire l’algorithme de libération d’une place occupée
ajoute le noindiqué à la liste des éléments libres
PROCÉDURE liberePlace
DONNÉES : n ENT
DONN. MOD. : suivant TAB de ENT
DONN. MOD. : libre ENT
....
FIN PROCÉDURE
Algorithme à écrire 6-Libération d’une place occupée
–5/8–
1 / 12 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 !