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
i1
TANTQUE i <=lFAIRE
nouveau(r)
lire(x)
r.info x
r.suivant liste
liste r
ii+ 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
il
TANTQUE i >= 1 FAIRE
nouveau(r)
r.V [i]
r.suivant liste
liste r
ii1
FIN TANTQUE
Algorithme 3 Parcours d’une liste
PROCEDURE parcours (E liste : RefCellule de T)
VAR l : RefCellule de T
lliste
TANTQUE l <> nil FAIRE
traiter(l)
ll.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
lliste
SI l <> nil ALORS
traiter(l)
ll.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
lliste
SI l <> nil ALORS
vl.info
ecrire(v)
ll.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
lliste
n0
TANTQUE l <> nil FAIRE
nn+ 1
ll.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
lliste
nb 0
TANTQUE l <> nil FAIRE
el.info
SI V=e ALORS
nb nb + 1
FIN SI
ll.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
lliste
i1
TANTQUE i < k ET l <> nil FAIRE
ii+ 1
ll.suivant
FIN TANTQUE
trouve ((i=k)ET (l <> nil))
rl
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
lliste
trouve F AUX
TANTQUE non trouve ET l <> nil FAIRE
SI l.info =VALORS
trouve V RAI
SINON
ll.suivant
FIN SI
FIN TANTQUE
acces trouve
rl
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 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 !