Universit´e Mohamed Khider-Biskra
Facult´e des Sciences Exactes et Sciences de la Nature et de la Vie D´epartement d’informatique
2eme` ann´ee LMD Algorithmique et structures de donn´ees 3
28 F´ev 2021 08:00-09:00, Amphis K,H
Examen
Bar`eme: 1.5 + 2.5 + 3 + 3 + 3 + 4 + 3
On souhaite dans cet exercice traiter des listes lin´eaires chain´ees de nombres entiers.
Exemple :
T ete7−→[4]7−→[1]7−→[2]7−→[1]7−→[3]7−→N il
1. Donner les d´eclarations permettant d’utiliser de telles listes.
2. Soit la fonction f suivante :
Fonction f(P :Poniteur(TMaillon)) : entier;
var x :entier; D´ebut
Si (P=Nil) Alors f ← 0 ;
Sinon
x← f(Suivant(P)) + 1 ; f ← Valeur(P)×x; Fin Si;
Fin;
(a) Donner la valeur retourn´ee par l’appel de la fonctionf sur la liste de l’exemple ci-dessus.
(b) Calculer la complexit´e de la fonction f en fonction de la longueur n de la liste pass´ee en param`etre.
3. ´Ecrire la fonction r´ecursive :
Fonction Tri´ee(L : pointeur(TMaillon)) :bool´een ;
permettant de retourner vrai si la liste L est tri´ee dans l’ordre croissant et faux sinon.
4. ´Ecrire la proc´edure :
Proc´edure Inverser(L : pointeur(TMaillon)) ; permettant d’inverser la liste Lsans cr´eer de nouveaux ´el´ements.
5. ´Ecrire la proc´edure
Proc´edure Trier(L : pointeur(TMaillon)) ; permettant de trier la liste d’entiers L en utilisant la m´ethode par Bulle.
6. Donner l’arbre binaire de recherche obtenu en ins´erant dans l’ordre les cl´es suivantes :18, 25, 22, 9, 19, 4, 31, 14.
FFF Bonne chanceFFF
Corrig´ e type
1. D´eclarations permettant d’utiliser de telles listes.
Type TMaillon =Structure Valeur : entier ;
Suivant :Pointeur(TMaillon) ; Fin ;
Var Tete : Pointeur(TMaillon ;
2. (a) Valeur retourn´ee par l’appel de la fonctionf sur la liste de l’exemple = 48
(b) Complexit´e de la fonction f en fonction de la longueurn de la liste pass´ee en param`etre.
Le temps T(n) d’ex´ecution de la fonction :
T(n) =
a si n= 0 (P =N il)
T(n−1) +b sinon (si P 6=N il :n6= 0)
– La constantea englobe le temps du test (n6=N il) et le temps de l’affectation (f ←0)
– La constanteb englobe :
* le temps du test (P =N il),
* le temps de l’op´eration + entref(Suivant(P)) et 1 l’affectation `a x.
* et le temps de l’op´eration ×entre V aleur(P) etx et l’affectation au r´esultat final.
T(n) =T(n−1) +b
= [b+T(n−2)] +b
=T(n−2) + 2b
= [b+T(n−3)] + 2b
=. . .
=T(n−i) +ib
=. . .
=T(0) +nb==a+nb T(n) =nb+a
Donc la complexit´e est enO(n) car aetbsont des constantes positives.
3. Fonction r´ecursive Tri´ee(L : pointeur(TMaillon)) :bool´een ;
Fonction Tri´ee( L:Poniteur(TMaillon)) : bool´een;
D´ebut
Si (L=Nil ou Suivant(L)=Nil ) Alors Tri´ee← Vrai ;
Sinon
Si (Valeur(L)>Valeur(Suivant(L)) )Alors Tri´ee← Faux ;
Sinon
Tri´ee← Tri´ee(Suivant(L)) ; Fin Si;
Fin Si;
Fin;
4. Proc´edure Inverser(L : pointeur(TMaillon)) ;
Proc´edure Inverser(L :Pointeur(TMaillon));
var N ouelleL, P :Pointeur(TMaillon); D´ebut
N ouelleL← Nil ;
Tant que ((L6= Nil) )faire P ←L;
L←Suivant(L) ; Aff adr(P, N ouvelleL) ; N ouvelleL←P; Fin TQ;
L←N ouvelleL; Fin;
5. Proc´edure Trier(L : pointeur(TMaillon)) ;
Proc´edure Trier( L:Pointeur(TMaillon));
var P, f in :Pointeur(TMaillon); x :entier;
D´ebut
f in←N il;
Tant que ((L6=f in))faire P ←L;
Tant que ((P 6=f in) et (Suivant(P)6=f in) ) faire Si(V aleur(P)> V aleur(Suivant(P))) Alors
x←V aleur(P) ;
Aff val(P, V aleur(Suivant(P))) ; Aff val(Suivant(P), x) ;
Fin Si;
P ←Suivant(P) ; Fin TQ;
f in←j; Fin TQ;
Fin;
6. Donner l’arbre binaire de recherche obtenu en ins´erant dans l’ordre les cl´es suivantes :18, 25, 22, 9, 19, 4, 31, 14.