Académique Documents
Professionnel Documents
Culture Documents
3.La Répétition
A. Tanque
La Syntaxe est la suivante ;
Tanque Cond faire
Act
Fin tanque
Dans ce format l'action peut ne jamais être exécuté
Exemple : X 10
Tanque (X > 0) faire
X X+5
Fin tanque
Jamais exécuté car X négatif au départ
B. Répéter
Syntaxe
Repeter
Act
Jusqu'à Cond
Exemple Répéter
'corriger les copies'
Jusqu’à (il n'en reste plus')
Dans ce format l'action est exécutée au moins une fois, c'est à dire au début
Pour la même action la condition de la 2è forme est la négation de la condition de la
1ème forme
Par exemple pour la 'correction des copies' la 1ème Forme est :
Cette forme est utilisée lorsque l'on sait le nbre de fois dont l'action est exécutée.
Dans ce cas le nbre d'exécution est contrôlé par un paramètre par exemple I.
Soit D la valeur initiale de I.
F la valeur finale de I.
La syntaxe de cette forme de répétition est alors
Pour I allant de D à F par pas P faire
Action
Fin Pour
P : est appelé le pas (step), c'est la constante que l'on ajoute à I à chaque étape.
Exemple :
Pour I allant de 2 à 18 par pas de 4 faire
Action
Fin Pour
L’action est exécutée pour la valeur suivante de I :
I : 2,6,10, 4, 18.
Remarque :
Généralement l'action est une fonction du paramètre I
A) La valeur finale peut ne pas être atteinte
Exemple : Pour I allant de 5 à 13 par pas de 3 faire
Action
Fin Pour
Les valeurs de I pour lesquelles l'action est exécutée I : 5, 8, 11
B) Le pas est pris au départ égale à 1
Exemple Pour I allant de 8 à 15 faire
Action
Fin Pour
Les valeurs prises pour i sont : I = {8,10,11,12,13,14,15}
Chapitre 2 : Les tableaux
I. Définition :
Un tableau est une structure de données ayant
Un nom, c’est son identifiant
Un type, c’est le type commun à tous ses éléments
Une taille, c’est le nbre d’éléments contenues dans le tableau
Une dimension, c’est-à-dire le nbre de paramètre entiers permettant d’accès à
chaque élément du tableau
Remarque : on s’intéressera ici aux tableaux de dimension 1 et 2
A. Tableaux de dimension 1
1. Exemple
TAB : {18,-3,20,10,40,25}
Nom : TAB
Taille N=6,
Type : entier
2. Primitive d’accès
Si i £ [1,6], TAB (i) est le 1 er élément
Si i non £ [1,6], TAB (i)est Indéterminé
4. Applications
Il Ya plusieurs applications, elles s’appuient sur le parcours
_Création
_Somme
_Eclatement
_Monotones etc.
Exercice1 : Crée un tableau TAB de table N à partir des valeurs Val saisir
Algorithme :
Var I, N, Val : entier
Procedure Cree TAB (et TAB [N])
Debut
Affecter (‘ Donner la taille N’)
Saisir N
Si (N<= 0) alors
Affecter (‘Taille incorrecte’)
Sinon
Pour i allant de 1 à N faire
Affecter (‘ saisir la valeur du 1er element’)
Saisir Val
TAB (i) Val
Fin Pour
Fin Si
Fin Cree-TAB
Exercice2 : Somme de deux tableaux TAB1 et TAB2 de même dimension et de même type
Algorithme :
Procedure Somme (données TAB1[N], TAB2[N] ; resultat TAB[N])
Var i : entier
Debut
Pour I allant de 1 à N faire
TAB(i) TAB1(i) + TAB2(i)
Fin Pour
FIN Somme
Exercice3 : Eclater un tableau TAB [N] en 2 autres tableaux
-TAB1[N] qui contient la valeur impaire de TAB, les valeurs paires remplacées par 0
-TAB2[N] qui contient les valeurs paires, les valeurs impaires remplacées par 0
Exemple :
TAB : {18,9,31,10,40,7,12,19}
TAB1 : {0,9,31,0,0,7,0,19}
TAB2 : {18,0,0,10,40,0,12,0}
Procedure Eclat (donner TAB[N], resultat TAB1[N], TAB2[N])
Var i : entier
Debut
Pour i allant de 1 à N faire
Si (TAB(i) mod 2 = 0) alors
TAB2(i) TAB(i)
TAB1(i) 0
Sinon
TAB1(i) TAB(i)
TAB2(i) 0
Fin SI
Fin Pour
FIN
Exercice 4 : Recherche d’1 valeur dans un tableau TAB sont
TAB= {18,40,10,30,-2 ,60,20}
Valmin = -2, Posmin = 5
Procédure valeur-minimale (donnee TAB [N] ; resultat valmin, Posmin : entier)
Var i, Min, Pos : entier
Début
Pos 1
Min TAB (1)
Pour i allant de 2 à N faire
Si (TAB(i) < Min) alors
Min TAB (2)
Pos i
Fin Si
Fin Pour
ValMin Min
PosMin Pos
FIN
Exercice5 : Tri d’un tableau (croissant ou décroissant). Il ‘agit de la mise en mode des
l’éléments dans l’ordre croissant ou décroissant
Exemple
TAB = {18,5, 49,- 2, 20 ,30 ,49}
Trié en croissant il devient
TAB = {-2,5,10,15,18,20,30,49}
Il Ya plusieurs méthode de tri
Tri par partage
Tri par permutation
Nous nous intéressons ici au tri par permutation compte tenu de son efficacité.
Principe soient i et 2 entiers
Si i < j et TAB(i) > TAB(j) / désordre
-----> permute TAB(i) et TAB(j) comme suit :
Sauv TAB(i)
TAB(i) TAB(j)
TAB(j) Sauv
Algorithme : Parcourir le tableau TAB comme suit
-Comparer chaque élément TAB (i) à tous ses suivants TAB(j) avec j > i
Si l’ordre n’est pas en croissant permuté Tab(i) et TAB(j)
Procédure Tri_permut (données résultats TAB(N)
Var i, j, Sauv: entire
Debut
Pour I allant de 1 à N-1 faire
Pour j allant de i+1 à N faire
Si (TAB(i) > TAB(j)) alors
Sauv TAB (i)
TAB (i) TAB(j)
TAB (j) Sauv
Fin Si
Fin Pour
Fin Pour
Fin Tri-permit
4, 13, 20
10, 17
25, 30
12, 19, 32
Remarque :
a) Pour tout tableau non vide TAB il y’a au moins une monotonie croissante
b) Pour tout indice i entier avec i < N (N nbre d’élément contenu dans le TAB)
Si TAB(i) > TAB (i+1) on a une nouvelle monotonie qui apparait. Donc si CT désigne le
compteur des monotones, on a l’instruction svtes :
Si TAB(i) > TAB(i+1) alors
CT CT+1
Fin Si
*CT sera initialiser à 1 car il y’a moins une monotonie dans le tableau non vide
Travail demandé
Ecrire l’algorithme svt qui compte le nbre NB.Mono_croiss de monotonies
croissantes, contenue dans le tableau TAB
Fonction NB.Mono_croiss (donnees TAB(N)) : entier
Var i, CT : entier
Debut
Si (N>0) alors
CT 1
Pour i allant de 1 à N-1 faire
Si (TAB(i) >TAB(i+1)) alors
CT CT+1
Fin Si
Fin Pour
NB.mono_croiss CT
Sinon
Afficher (‘’Table vide’’)
Fin Si
Fin NB.Mono_croiss
Le plus long élément si (N > 0)
Exercice 7 : Ecrire l’algorithme svt qui détermine le nombre d’élément NBELT et la POSIT de
la plus longue monotone croissante du tableau TAB
_Dans l’exemple precedent NBELT: 4, POSIT:7.
Il s’agit de la monotone : 5, 40, 60, 85
Procedure START_Mono_Croiss (donnee TAB[N]; resultat NBELT, POSIT: entier)
Var il, ig, CTl, CTg, i, j: entier;
Mono : booleen
Debut
Si (N > 0) alors
Ig 1
CTl 1
CTg 1
Pour i allant de 1 à N-1 faire
il i
Mono vrai
j i
Tanque (mono = Vrai) et (j< N-1) faire
Si (TAB(j) <= TAB(j+1)) alors
CTl CTl+1
;j j+1
Sinon
, mono Faux
Finsi
Fin Tanque %comme on a un champ de monotone%
Si (CTl > CTg) alors
CTg CTl
; ig il
Fin Si
;i j
Fin Pour
NBELT CTg
POSIT ig
Sinon
Afficher (‘’tableau vide’’)
Finsi
Fin START_Mono_Croiss
4.) Application
Il s’agit d’algorithme utilisant cette structure de donnée comme donnée
Exercice1 :
Création d’une matrice Mat [L, C] à partir de la saisie de valeur Val
Procedure creation_Mat (resultat Mat [L, C])
Var I, j, Val: entire
Debut
Afficher (‘Saisir les lignes et les colonnes’)
Saisir L, C
Si ((l<=0) ou (C<=0)) alors
Afficher (‘’Paramètre incorrectes ‘’)
Sinon
Pour i allant d 1 à L faire
Pour j allant de 1 à C faire
Afficher (‘’ saisir la valeur’’)
Saisir Val
Mat (i, j) Val
Fin Pour
Fin Pour
Fin Si
Fin Crée_Mat
Exemple : Mat 12 4 9 11
6 0 14 -2
20 18 3 5
ii) D’un tableau TAB(N) on peut obtenir 2 matrices Mat si l’on ne précis pas le nbre de ligne.
Exemple :
Tab : {17, 10, 40, -5, 20, 12, 13, 18} à N= 8 éléments
Prenant L1 = 2, C1 = 4 et L2 = 4, C2 = 2
Mat1 : 17 10 40 -5 Mat2 : 17 10
20 12 19 18 40 -5
20 17
19 18
Eclater Mat2 [L, C] qui contient les éléments pairs de numéro de ligne et de numéro de colonnes
paires, les autres remplacés par 0
Mat1 [L, C] qui contient les éléments impairs de numéro de ligne et de colonnes impaires, les autres
remplacés par 0
RMAT [L, C] qui contient ce qui ne répondent pas aux critères précédant, ceux qui répondent sont
remplacés par 0
Exemple : Mat = 12 17 13 10 29 20
11 32 15 40 18 4
9 43 31 2 25 8
Mat1 = 0 0 0 0 0 0 Mat1 0 0 13 0 29 0
000000 0 0 0 0 0 0
000000 9 0 31 0 25 0
Mat2 = 0 0 0 0 0 0 Mat2 0 0 0 0 0 0
000000 0 32 0 40 0 4
000000 0 0 0 0 0 0
RMAT = 0 0 0 0 0 0 RMAT 12 17 0 10 0 20
000000 11 0 15 0 18 0
000000 0 43 0 2 0 8
Procedure Eclat ( donne Mat [L, C] ; resultat Mat1 [L, C], Mat2 [L, C], RMAT [L, C])
Var I, j : entier
Debut
Mat1 [L, C] 0
Mat2 [L, C] 0
RMAT [L, C] 0
FinPour
FinPour
Pour i allant de 1 à L faie
Pour j allan de 1 à C faire
Si ((Mat[i, j] mod2 = 0) et (i mod2 = 0) et (j mod2 = 0)) alors
Mat2[i, j] Mat (i, j)
Sinon
Sinon
Finsi
Fin Si
Fin Pour
Fin Pour
Fin Eclat
Debut
Sinon
Fin Pour
Fin Pour
ValMin Min
Fin Si
Fin ValMin
Exercice4 : Ecrire l’algorithme suivant et remplace chaque élément d’une ligne Mat par La valeur max
des éléments de la ligne
Exemple : Mat = 12 17 13 10
11 32 18 40
9 43 31 2
Mat = 17 17 17 17
40 40 40 40
43 43 43 43
Debut
Fin Si
Fin Pour
Fin Pour
Fin Pour
Fin Max_ligne
Représentation : schéma
Ou P est la pile
Base et Sommet sont des indices Bases
Base est l’indice du 1e élément de la pile.
Sommet est l’indice du dernier element de la pile.
Remarque : La représentation de données par un tableau est une représentation dite
STATIQUE c’est à dire que la taille est fixée.
Ce type de représentation est moins intéressantes que les représentations dites chaînée,
c’est-à-dire celle qui utilise des pointeurs, appelée représentation DYNAMIQUE.
Après l’étude de la structure de données les listes linéaires, on représentera la
représentation dynamique de la structure de données Piles.
---
Base
P
Remarque : on peut réduire la gestion d’une pile P à la valeur du sommet par exemple si la
pile est de taille N (Taille du tableau associé)
Elle est vide si Sommet = 0
Elle est pleine si Sommet=N
1.) Définition
Une pile P de taille N gérée sous forme de Tableau est définie par :
S
K
P
a) INITpilevide
Procedure INITpilevie (donnée_resultat P : pile)
Var Sommet : entier
Debut
Sommet 0
FIN INITpilevide
b) PileVide
Fonction PileVide (donnée P : pile)
Var Sommet : booleen
Debut
Si (Sommet = 0) alors
PileVide vrai
Sinon
PileVide faux
FinSi
FIN PileVide
c) Pilepleine
Fonction Pilepleine (donnée P : pile) : booleen
Var Sommet : entier
N : entier % taille de la pile %
Debut
Si (Sommet = N) alors
Pilepleine Vrai
Sinon
Pilepleine Faux
FinSI
Fin PilePleine
d) Empiler
Procedure Empiler (donnée P : pile ; val : type_valeur ; resultat P : pile)
Var Sommet : entier
Debut
Si (Pilepleine(p) = Vrai) alors
Afficher (‘pas d’espace’’)
Sinon
Sommet sommet+1
P (Sommet) Val
FinSi
FIN Empile
e) Depiler
Procedure Depile (donnée P : pile ; resultat P : pile, Val : Type_valeur)
Var Sommet : entier
Pilevide : booleen
Debut
Si (Pilevide (p) = Vrai) alors
Afficher (‘La pile est vide’)
Sinon
Val P(Sommet)
Sommet Sommet - 1
FinSi
Fin Depiler
Remarque
Appel des primitives
Dans leurs utilisations on réduira dans ce cours les appelles comme suit :
Soit P une pile, Val une valeur
InitPile (P)
PileVide(P)
Pilepleine(P)
Empiler(P)
Depiler (P, Val)
III) APPLICATIONS
Il s’agit d’algorithmes utilisant des primitives pour gérer les informations manipulées par une
pile
1.) Création d’une pile
Il s’agit de mettre des informations dans une pile à partir de données
Saisie
Provenant d’une autre structure de données(tableaux) par exemple
Ecrire l’algorithme suivant qui crée une pile P de Type entier et de taille N à partir de
Valeur Val saisies
Procedure Crée_Pile (donnée N : entier ; resultat P : pile)
Var Val : entier
Debut
Initpile (P)
Pour i allant de 1 à N faire
Afficher (‘ donner une valeur’)
Saisir Val
Empiler (P, Val)
Fin Pour
FIN Crée_Pile
2.) Somme e 2 piles P1 et P2
P1 et P2 doivent être de même taille et de même type
Exemple : P1 = P2= svg P=
20 17 37
-5 30 25
50 -15 35
8 22 30
résultat Depile empile
Procedure Somme (données P1, P2 : Pile ; resultat P : pile)
Var Val1, Val2, Val : entier SVG : Pile
Debut
Initpilevide (SVG); Initpilevide (p)
Tanque (PileVide (P1) = Faux) faire
Depiler (P1, Val1)
Depiler (P2, Val2)
Empile (SVG, Val)
FinTanque
Tanque (PileVide (SVG) = Faux) faire
Depiler (SVG, Val)
Empiler (P, Val)
FinTanque
FIN Somme
3.) Eclatement d’une pile P en 2 piles P1 ET P2 de même taille et de même type
Ecrire l’algorithme suivant qui éclate une pile P à la valeur entières en 2 piles P1 et P2
P1 contient les valeurs impaires de P, positionnées aux mêmes endroits, les valeurs paires
remplacées par 0
P2 contient les valeurs paires de P, les valeurs impaires remplacées par 0
Exemple P= P1= P2=
7 7 0
10 0 10
8 0 8
19 19 0
11 11 0
Procédure Eclat (donnée P : pile ; résultat P1, P2 : pile)
Var Val : entier
SG1, SG2 : pile
Const zero = 0
Debut
Initpilevide (P1), Initpilevide (SG1), Initpilevide (P2), Initpilevide (SG2)
Tanque (PileVide(P)=faux) faire
Depiler (P, Val)
Si (Val mod2=0) alors
Empile (SVG2, Val)
Empile (SVG1, zero)
Sinon
Empile (SVG1, Val)
Empile (SVG2, zero)
Fin Si
FinTanque
Tanque (Pilevide (SVG1) = faux) faire
Depile (SVG1, Val)
Empile (P1, Val)
FinTanque
Tanque (Pilevide (SVG2) = faux) faire
Depile (SVG2, Val)
Empile (P2, Val)
FinTanque
Fin eclat
4.) Trier les éléments d’une pile P à la valeurs entiers principe
30
50
40
-5
8
Nous étudierons par la suite les structure files particulières appelées files avec niveau de priorité,
c’est-à-dire une file dans laquelle on peut extraire d’autre files. Par exemple des personnes devant
un guichet on peut associer des sous-groupes tel que :
Les vieux
Les femmes
Les enfants
Suppression
………….
Insertion
On désignera par
Il s’agit ici d’une représentation CONTIGUE d’une file, c’est-à-dire une représentation sous forme de
tableau d’une file dite simple comparée avec les files avec niveau de priorité. Il y’a un autre type de
représentation appelé la représentation dynamique ou chaîne qui utilise la notion de pointeur.
On s’y introduira une fois avoir défini ce type de représentation dans les chapitres les listes linéaires.
B K L F C
TETE QUEUE
Situation initiale
Ajouter R et D : action
B K L F C R D
TETE QUEUE
Situation Finale
b) Algorithme
Procédure Ajout (donne F : file ; val : type-value ; TETE, QUEUE : entier ; resultat F : file)
Debut
Afficher (‘file pleine’) %cela veut dire que l’espace allouer est dépassé don la file est plaine%
Sinon
Si (TETE = 0) alors % s’il y’a personne à la tête alors tête reçoit la premier P%
TETE 1
Fin Si
Fin Si
Fin Ajout
Exemple
TETE QUEUE
B o n j
Situation initiale
Ajouter OUR
Action
o u r B o n j
QUEUE TETE
Situation finale
Algorithme
Procédure Ajout (donne F : file ; val : type-value ; TETE, QUEUE : entier ; resultat F : file)
Debut
QUEUE 1
Sinon
Queue Queue + 1
Fin Si
Sinon
Si (TETE = 0) alors
TETE 1
Fin Si
Fin Si
Fin Ajout
2.) Suppression d’élément
Exemple
Algorithme
Procedure sup (donne F : file ; TETE, QUEUE : entier ; resultat F : file, val : type-valeur)
Debut
Si (TETE = 0) alors
Sinon
Val F (TETE)
Si ( TETE = QUEUE) alors % c’est-à-dire qu’il y’a au moins un élément dans la file donc init à 0%
TETE 0
QUEUE 0
TETE TETE + 1
Fin Si
Fin Si
Fin Sup
Procedure sup (donne F : file ; TETE, QUEUE : entier ; resultat F : file, val : type-valeur)
Debut
Si (TETE = 0) alors
Sinon
Val F (TETE)
Si (TETE = QUEUE) alors % c’est-à-dire qu’il y’a au moins un élément dans la file donc o init%
TETE 0
QUEUE 0
Si (TETE = N) alors
TETE 1
Sinon
TETE TETE + 1
Fin Si
Fin Si
Fin Si
Fin Sup
Un élément un plus prioritaire qu’un autre si sa priorité est inférieure à celle de l’autre.
2.) Exemple
(P1, 10), (P2, 8), (P3, 4), (P4, 10) sera exécuté dans l’ordre suivant : P3, P2, P1, P4
3.) Représentation
A Chaque niveau de priorité est associé à une file. Tous les éléments d’une file étant de même
priorité, un processus possède un autre s’il est inséré avant, lus dans la même file
……
Priorité (Pmax)
……
…….
TETE (Pmax)
……
QUEUE (Pmax)
DEFINITIONS :
DIM est la taille d’une file (nbre d’élément que peut contenir une sous-file)
TAB = Tableau (Pmax, DIM) est le tableau contenant dans chaque ligne i de Priorité(i) les éléments de
cette priorité ayant un maximum DIM éléments
TETE = tableau (Pmax) est telle que pour chaque ligne i, TETE(i) est l’élément de tete
QUEUE= tableau (Pmax) est telle que pour chaque ligne i, QUEUE (i) est l’élément de QUEUE
Exemple soit une file FILE avec un niveau de priorité contenant des éléments ayant la priorité
Pmax = 5 svt : (R,5) (A,6), (C,3), (B,7), (F, 5), (E, 3), (D, 5), (K, 7), (H, 4), (J, 6), (L, 3), (P, 4), (L, 7), (X, 4),
(Y, 6), (T, 3), (M,3)
Représentation
1 3 c E L T M 2 6
2 4 H P X 1 3
3 5 R F D 4 6
3 6 A J Y 3 5
5 7 B K L 1 3
4.) Algorithme de suppression d’ajout dans une file avec niveau de priorité
a.) Algorithme de suppression
Procedure sup (donnes Pmax, DIM : entier, TAB (Pmax, DIM) ; TETE(Pmax), QUEUE (Pmax) ;
resultat TAB (Pmax, DIM), TETE(Pmax), QUEUE(Pmax))
Debut
Trouve faux ::
Priorite 1
Trouve vrai
TETE (Priorite) 0;
QUEUE (Priorite) 0
Sinon
TETE (Priorite) 1
Fin Si
Fin Si
Fin Si
Fin Tanque
Fin
a) Suppression
b) Ajout
Pour ajouter une valeur Val dans la file il faut connaitre la priorité PV associée à cette valeur.
Ainsi dans la sous liste de priorité Pv l’ajout se fera de façon classique c’est-à-dire à partir de la
queue de cette sous liste
Exemple:
6 K S V U 2 4
17 H 0 0
20 U A R T P 3 6
35 B N C E F 1 5
42 L M S W G 4 7
(H, 17), (L, 42), (P, 20), (U, 6) on obtient la mise à jour écrite en bleu
Travail demandé :
Ecrire l’algorithme suivant qui ajoute une valeur Val de priorité Pv dans la file représentée par les
tableaux
TETE(Pmax)
QUEUE(Pmax)
Procedure Ajout (donne Val, Pv : entier, TAB (Pmax, DIM) ; TETE (Pmax), QUEUE (Pmax) ; resultat
TAB (Pmax, DIM), TETE, QUEUE)
Debut
Position 1;
Sinon
Fin Si
Sinon
QUEUE(Pv) Position
TETE (Pv) 1
Fin Si
Sinon
Fin Si
Fin Ajout
Chapitre 4 : Les listes linéaires
I.) Introduction
Les structures de données sont généralement introduites à partir de la formalisation des cas
pratiques qui laissent entrevoir généralement un certain nbre de problèmes qu’il revient à
formaliser.
Concernant la structure de données ‘Liste Linéaire’ le concept à trouver ses origines Dans ce qui suit
à savoir :
1.) Exemple
Considérons les deux types de tableaux svt
Conclusion
A La structure d donnée classique Tableau, on a associé un autre tableau Suivant qui permet de
représenter cette nouvelle structure de donnée appelée Liste Linéaire.
Valeur Suivant
Un tableau, il s’agit de la représentation par tableau (dite Statique) d’une liste linéaire
UN pointeur il s’agit de la représentation chainée (dite dynamique) d’une liste linéaire
Soient N la taille commune de ces tableaux NULL (= 0) la fin de la liste il s’agit du dernier élément qui
n’a pas de successeur
Ainsi une liste linéaire L représentée par des tableaux de taille N à valeurs entières par exemple sera
définie par
Remarque : Inconvénient
L’inconvénient majeur de cette forme de représentation réside dans l’aspect statique des structures
de données, c’est-à-dire la taille est fixée.
La représentation Suivant appelée représentation dynamique résous cet inconvénient
Schéma
VALEUR LIEN
Où lien est représenté par une flèche ( )
TETE
15 8 40 -3 30 50 10 ou signifie NULL(FIN)
TETE
15 8 40 -3 30 50 10
PRIMITIVES élémentaires
i) Valeur
ii) Lien
Exemple
P1 P2 P3
10 7 15
i) (P. LIEN). VALEUR Est la valeur associée au suivant de P s’il existe P. LIEN<>NULL
ii) (P. VALEUR). LIEN N’est pas définie car on ne connait pas le successeur d’une valeur
Exemple
P1 P2 P3
10 4 20
III.) Application
1.) Remarque
Il s’agit d’algorithme utilisant les primitives élémentaires définies précédemment à savoir VALEUR et
LIEN dans des exercices généralement de parcours de liste linéaires.
La gestion dynamique qui s’intéresse surtout à la création et à la mise à jour sera étudiée plus tard
une fois depuis définis les primitives élémentaires associées à cette gestion.
L1 : tete de la liste
Exercices d’Applications
Ecrire l’algorithme
Var L11 : L
CT : entier
Debut
L11 L1
CT 0
CT CT+1
Fin Tanque
NB_ELT CT
Fin NB_ELT
Exercice 2
Soit L1 une liste linéaire à valeurs VALEUR définies par l’élément structure comme suit
Travail demandé :
Description
Type L : ENREG
ENREG = structure
Debut
Valeur = structure
Debut
Nocpte : entier
Nom : alphabétique
Prénom : alphabétique
Solde : entier
Sens : caractère
Fin
Lien : pointeur
FIN
L11 : L
Debut
L11 L1
CT 0
CTc 0
CT CT+1
Fin Si
Fin Tanque
Fin Si
Fin Pourcred
Schéma :
L1 LF L1 SVG
Fusion
L2 L2
Remarque
Si L1 = Null alors LF L2 : C’est-à-dire que si l’une des listes est vide la fusion est L’autre
Si L2 = Null alors LF L1
Il y a deux solutions
Debut
LF L2
Sinon
L11 L1 ; SVG L1
SVG L11
Fin Tanque
SVG . LIEN L2
Fin Si
Fin Fusion1
Var L11 : L
Debut
Si L1 = Null alors
LF L2
Sinon
L11 L1
LF L1
L11 . LIEN L2
Fin Si
FIN Fusion2
LIBRE est une liste linéaire à éléments occupées, c’est-à-dire à valeurs inactives
a) Ajouter :
Un élément dans L1 se fait parallèlement à la suppression de cet élément de la liste LIBRE on parle de
création pour L1 (Allocation)
b) Suppression
Un élément dans L1 se fait parallèlement à l’ajout de cet élément de la liste LIBRE on parle de
suppression (Désallocation)
ii.) Algorithme
Debut
Sinon
P LIBRE
Fin Si
Fin Allouer
b.) Desallocation
i) Schéma
P libre p
ii) Algorithme
Debut
P . LIEN LIBRE
LIBRE P
Fin Désallouer
a) On réduira dans la pratique les appels des primitives précédentes comme suit :
ALLOUER (P) ; DESALLOUER (P)
b) L’allocation pouvant se solder par un échec s’il n’y a pas d’espace, nous procèderons comme
suit :
Allouer (P)
Si (P <> Null) alors
‘Signifie que s’il y a un espace’
Remarque :
Dans Généralement tous les langages de programmation on suppose que l’allocation est toujours un
succès car pas de problème d’espace.
3.) Application
Il s’agit d’exercice concernant
Saisie de valeur
Valeurs provenant de tableaux, de fichiers, de Piles etc
Exemple :
Algorithme associé
Debut
Si (N <=0) alors
Sinon
L1 Null
Allouer (P)
Si (P = Null) alors
Sinon
Saisir Val
Si (i = 1) alors
L1 P ; SVG P
Sinon
SVG .lien P
SVG P
Fin Si
Finsi
Fin Pour
Fin Si
Fin cree_liste
Exercice : Création d’une liste linéaire L1 à partir des éléments d’une pile S
Premier : Booleen
P:L
Debut
Allouer (P)
Si (P = Null) alors
Sinon
Sinon
SVG .Lien P
SVG P
Fin Si
Fin Si
Fin Pour
FIN Cree_Liste
Remarque :
CT: entier
Debut
Si (K = 1) alors
Sinon
SVG L1 ; L11 L1 ; CT 0
CT CT + 1
Si (CT< K) alors
Fin Si
Fin tanque
Sinon
Desallouer (L11)
Finsi
Fin Sup
L11
SVG K
Desallouer (L11)
Remarque :
Si (K=1) suppression
L1 L1
SVG
SVG L1
L1 L1. Lien
Desallouer (SVG)
1) Cas
K= 1
L1 P
Val L1
Donc P . Lien L1
L1 P
Val 1
L1 2
SVG L11
P .lien L1
SVG . lien P
Var CT : entier
P, SVG : L
Debut
SI (K < = 0) alors
Sinon
Allouer(P)
Sinon
Si (K = 1) alors
P . lien l1 ; l1 P
Sinon
CT O ; L11 L1
CT CT+1
Fin Tanque
Si (CT= K) alors
P . lien L11
SVG . lien P
Sinon
Fin Si
Fin Si
Fin Si
Fin Si
Fin Ajout
Remarque
2) Liste bidirectionnelle
Il s’agit de liste linéaire que nous notons Lb Dont chaque élément P <> Null est représenté par le
triplet suivant
a) Définition
Type Lb = ENGEG
ENGEG = structure
Debut
Prec : pointeur
Suc : pointeur
Fin
b) Primitives élémentaires
Soi P un élément d’u ne liste bidirectionnelle Lb avec P <> Null
i) Valeur
P . Valeur est la valeur associée à P
P . Prec est l’élément prédécesseur de P
P . Suc est l’élément successeur de P
Remarque : Composition
(P . Prec) . Valeur est la valeur du prédécesseur P s’il existe (P . Prec <> Null)
(P . Suc) . Valeur est la valeur du successeur P s’il existe (P . Suc <> Null)
Remarque
Avantage
Inconvénient
C’est l’espace mémoire supplémentaire pour chaque élément P d’une telle liste pour stocker le
pointeur supplémentaire Prec ce n’est pas réellement très important compte tenu de la disposition
de la mémoire.
Chapitre VI : Les structures de données ARBRES
I) Préalable
Cette structure de données est utilisée pour représenter des données obéissantes entre autres à la
règle suivante
D’un élément on peut à chaque fois atteindre plusieurs éléments : il s’agit d’une structure de
donnée dite Linéaires
1) Schéma
A
B C D
E F G H
De A on peut atteindre B, C, D
De C on peut atteindre E, F, G, H
2) Définition
Un arbre est une structure de donnée qui
Peut-être vide
Réduite à un élément
Avoir plusieurs éléments dont chacun, sauf l’élément particulier appelé Racine, dépend
hiérarchiquement d’un arbre appelé père
Exemple A
B C D
E F G H I
A est la racine
B, C, D dépend hiérarchiquement
G, H, I dépend hiérarchiquement
II) Définition
a) Nœuds
Les éléments composants un arbre sont appelés les nœuds. Ils sont reliés entre eux par des éléments
appelés arêtes, on parlera de pointeurs.
Exemple A
B C
D E F G H I J
Degré (A) = 2 ; Degré (B) = 3 ; Degré (C) = 4 ;
Degré (D) = Degré (E) = Degré (F) = Degré (G) = Degré (H) = Degré (I) = Degré (J) = 0
c) Feuille
Un nœud est appelé feuille si son degré est égal à 0.
Arbre Binaire : Son degré maximum est 2 l’arbre de l’exemple précédent est 4 - aire
B C
Tout arbre N-aire a un équivalent binaire construit comme dans l’exemple suivant
E F G H I J K
L M
N O P
G H I J
L M
N O P
E F
Conclusion :
Tout arbre N-Aire pouvant être représenté sous forme binaire on ne s’intéressera par la suite qu’aux
arbres binaires
III) Représentation
Préalable
Comme les autres structures de données étudiées un arbre Racine (sommet de la hiérarchie parfois
appelé Père) peut être représenté
Pour les mêmes raisons signalées pour les structures de donnée précédentes, On va ici à la
représentation dynamique
1- Représentation dynamique
Arbre binaire chaque nœud P <> null est représenté par le triplet suivant :
Où
Exemples
B C