Chapitre 1
LISTES LINÉAIRES
1.1.
Introduction
Nous présentons dans ce chapitre les listes linéaires chaînées. Une liste linéaire serait définie par une suite de cellules.
Une cellule est définie par deux champs : le premier champs indique le contenu de la cellule, et le deuxième champs est une
référence vers une autre cellule. Chaque cellule est associée à une adresse dans la mémoire.
Nous définissons un nouveau type qu’on appellera RefCellule qui signifie que la variable associée contiendra une adresse de
mémoire.
1.1.1.
Définition de la structure
type Cellule de T = structure
info : T
suivant : RefCellule de T
type Refcellule de T = ↑Cellule de T
1.1.2.
Gestion dynamique de la mémoire
Pour pouvoir manipuler les liste nous supposons qu’on dispose des procédures suivantes :
nouveau(L) cree une cellule et stocke une référence de type RefCellule de T dans L. Cette cellule va contenir un
élément de type T. T correspond au mot clé qui définit le type. Quand on crée une cellule, le champs suivant est
affecté à nil par default.
laisser(L) détruit une cellule dont la référence est donnée dans L.
Nous remarquons qu’il est suffisant d’avoir la référence de la première cellule de la liste pour pouvoir manipuler la liste
entière et ceci en accédant au champ suivant.
1.1.3.
Création d’une liste
Nous proposons un algorithme qui crée une liste chaînée de longueur donnée à partir des valeurs lues par l’utilisateur.
Nous présentons ensuite l’algorithme qui permet de construire une liste chaînée à partir d’un vecteur donné.
1.1.4.
Parcours d’une liste
Nous supposons que nous disposons d’une procedure traiter qui traite une cellule en connaissant sa référence. Nous
présentons deux versions pour le parcours d’une liste de gauche à droite.
1.2.
Quelques algorithmes sur les listes
1
1.2. QUELQUES ALGORITHMES SUR LES LISTES CHAPITRE 1. LISTES LINÉAIRES
Algorithme 1 Création d’une liste à partir des valeurs entrées par l’utilisateur, la liste est crée à l’envers
PROCEDURE creerliste (E l : ENTIER, S liste : RefCellule de T)
VAR r : RefCellule de T
x:T
i : ENTIER
liste ←nil
i←1
TANTQUE i <=lFAIRE
nouveau(r)
lire(x)
r↑.info ←x
r↑.suivant ←liste
liste ←r
i←i+ 1
FIN TANTQUE
Algorithme 2 Construction d’une liste à partir d’un vecteur
PROCEDURE vecteurliste (E l : ENTIER,E V : VECTEUR de T, ES liste : RefCellule de T)
VAR r : RefCellule de T
i : ENTIER
liste ←nil
i←l
TANTQUE i >= 1 FAIRE
nouveau(r)
r↑.V [i]
r↑.suivant ←liste
liste ←r
i←i−1
FIN TANTQUE
Algorithme 3 Parcours d’une liste
PROCEDURE parcours (E liste : RefCellule de T)
VAR l : RefCellule de T
l←liste
TANTQUE l <> nil FAIRE
traiter(l)
l←l↑.suivant
FIN TANTQUE
Maria Malek - EISTI - CPI1 2
CHAPITRE 1. LISTES LINÉAIRES 1.2. QUELQUES ALGORITHMES SUR LES LISTES
Algorithme 4 Parcours d’une liste - version récursive
PROCEDURE parcoursR (E liste : RefCellule de T)
VAR l : RefCellule de T
l←liste
SI l <> nil ALORS
traiter(l)
l←l↑.suivant
parcoursR(l)
FIN SI
Algorithme 5 Afficher le contenu d’une liste donnée
PROCEDURE ecritListe (E liste : RefCellule de T)
VAR v : T
l : RefCellule de T
l←liste
SI l <> nil ALORS
v←l↑.info
ecrire(v)
l←l↑.suivant
ecritListe(l)
FIN SI
Algorithme 6 Calcul de la longueur d’une liste
FONCTION longueur (liste : RefCellule de T) : ENTIER
VAR n : ENTIER
l : RefCellule de T
l←liste
n←0
TANTQUE l <> nil FAIRE
n←n+ 1
l←l↑.suivant
FIN TANTQUE
RETOURNER n
Maria Malek - EISTI - CPI1 3
1.2. QUELQUES ALGORITHMES SUR LES LISTES CHAPITRE 1. LISTES LINÉAIRES
Algorithme 7 calcul du nombre d’occurence d’un élément dans une liste
FONCTION nbOcc (liste : RefCellule de T, V :T) : ENTIER
VAR nb : ENTIER
e :T
l : RefCellule de T
l←liste
nb ←0
TANTQUE l <> nil FAIRE
e←l↑.info
SI V=e ALORS
nb ←nb + 1
FIN SI
l←l↑.suivant
FIN TANTQUE
RETOURNER nb
Algorithme 8 Accès à un élément par sa position
PROCEDURE accesk (E liste : RefCellule de T, E k : ENTIER, S r : RefCellule de T, S trouve :BOOLEEN)
VAR i : ENTIER
l : RefCellule de T
l←liste
i←1
TANTQUE i < k ET l <> nil FAIRE
i←i+ 1
l←l↑.suivant
FIN TANTQUE
trouve ←((i=k)ET (l <> nil))
r←l
Maria Malek - EISTI - CPI1 4
CHAPITRE 1. LISTES LINÉAIRES 1.2. QUELQUES ALGORITHMES SUR LES LISTES
Algorithme 9 Accès à un élément par son contenu - première occurrence
PROCEDURE accesV (E liste : RefCellule de T, E V : T, S r : RefCellule de T, S acces :BOOLEEN)
VAR trouve : BOOLEEN
l : RefCellule de T
l←liste
trouve ←F AUX
TANTQUE non trouve ET l <> nil FAIRE
SI l↑.info =VALORS
trouve ←V RAI
SINON
l←l↑.suivant
FIN SI
FIN TANTQUE
acces ←trouve
r←l
Algorithme 10 Accès à un élément par son contenu - première occurrence - version récursive
FONCTION accesVR (E liste : RefCellule de T, E V : T) : RefCellule de T
SI liste =nil ALORS
RETOURNER nil
SINON
SI liste ↑.inf o =VALORS
RETOURNER liste
SINON
RETOURNER accesV R(liste ↑.suivant)
FIN SI
FIN SI
Maria Malek - EISTI - CPI1 5
1 / 8 100%
La catégorie de ce document est-elle correcte?
Merci pour votre participation!

Faire une suggestion

Avez-vous trouvé des erreurs dans l'interface ou les textes ? Ou savez-vous comment améliorer l'interface utilisateur de StudyLib ? N'hésitez pas à envoyer vos suggestions. C'est très important pour nous!