





Study with the several resources on Docsity
Earn points by helping other students or get them with a premium plan
Prepare for your exams
Study with the several resources on Docsity
Earn points to download
Earn points by helping other students or get them with a premium plan
Community
Ask the community for help and clear up your study doubts
Discover the best universities in your country according to Docsity users
Free resources
Download our free guides on studying techniques, anxiety management strategies, and thesis advice from Docsity tutors
Ce document contient des exercices relatifs à l'algèbre de données, plus précisément sur les arbres binaires AVL et les listes circulaires. Les exercices comprennent l'écriture de fonctions récursives et itératives pour insérer des valeurs dans un arbre AVL, supprimer le maximum, et éclater une liste circulaire. Il est demandé d'utiliser les structures de données et les modèles définis dans les questions précédentes.
Typology: Exams
1 / 9
This page cannot be seen from the preview
Don't miss anything!
L2 Informatique Algorithmique et Structures de Données 2016-
Arbre 1Arbre 1Arbre 1Arbre 1 Arbre 2Arbre 2Arbre 2Arbre 2 Arbre 3Arbre 3Arbre 3Arbre 3 Représentation « Dynamique » « Statique standard » « Statique séquentielle » TYPE Tnoeud1= STRUCTURE Info, Bal: entier Père,Père,Père,Père, FG, FD : *Tnoeud FIN R : *Tnoeud
TYPE Tnoeud2= STRUCTURE vide: booléen Père, FG, Bal, Info, FD : entier FIN R : Tableau [MAX] de Tnoeud
TYPE Tnoeud3= STRUCTURE vide: booléen ; Bal, Info: entier ; FIN R = Tableau [MAX] de Tnoeud Vide Père FG Bal Info FD F 3 2 2 12 5 V F 0 7 - 1 7 6 F - 1 0 1 17 4 F 3 11 1 32 8 F 0 - 1 0 16 - 1 F 2 - 1 - 1 10 13 F 2 - 1 0 2 - 1 F 4 - 1 0 37 - 1 V V F 4 - 1 - 1 22 12 F 11 - 1 0 27 - 1 F 6 - 1 0 8 - 1 V …… …. …. … ….
Vide Bal Info V F 0 12 F - 1 7 F 0 22 F 0 2 F 1 10 F 1 17 F 0 32 V V F 0 8 V F 0 16 V F 0 27 F 0 37 V …..
I. Soit « sommet » une pile implémentée sous forme d’une LLC définie comme suit : TYPE type1= STRUCTURE // à compléter (Question III.2) FIN
TYPE maillon= STRUCTURE Val : type1; suiv : * maillon Fin
sommet : *maillon;
C’est une pile prioritaireprioritaireprioritaireprioritaire où l’élément le plus prioritaire est au sommet. La priorité est un entier positive donné par la « fonction prio (val : type1) : entier » ; ainsi :
Elts: Tableau [MAX] de type2; tete, NbElt : entier; FIN Les trois champs du type FA ont la signification suivante :
I. Soit L une Liste linéaire Chaînée bidirectionnelle. type MaillonBD = Structure val : typeqq ; suiv, prec: * MaillonBD ; fin
type ListeBD= Structure Tête, Queue: * MaillonBD ; fin En utilisant les structure de données (MaillonBD et ListeBD) ci-dessus et le modèle défini en cours, écrire :
Le tri rapide consiste à choisir une valeur dans la liste appelée « pivot » (par exemple la première valeur de la liste) et de déplacer avant elle toutes celles qui lui sont inférieures et après elle toutes celles qui lui sont supérieures. Réitérer le procédé avec la tranche de la liste inférieure (Li) et la tranche de la liste supérieure (Ls) à ce pivot tant que les listes (Li ou Ls) ne sont pas vides. Par exemple : pour la liste L = [20 202020 ⇔ 15 ⇔ 10 ⇔ 35 ⇔ 19 ⇔ 13 ⇔ 5 ⇔ 3 ⇔ 12 ⇔ 7 ⇔ 16 ⇔ 40 ⇔ 25 ⇔ 38]. Si on choisit le pivot comme la première valeur de la liste, donc on aura : 15151515 ⇔⇔⇔⇔ 10 ⇔ 19 ⇔ 13 ⇔ 5 ⇔ 3 ⇔ 12 ⇔ 7 ⇔ 16 ⇔ 20 ⇔ 35353535 ⇔⇔⇔⇔ 40 ⇔ 25 ⇔ 38
Le tableau suivant résume le déroulement de ce principe de tri :
20202020 ⇔ 15 ⇔ 10 ⇔ 35 ⇔ 19 ⇔ 13 ⇔ 5 ⇔ 3 ⇔ 12 ⇔ 7 ⇔ 16 ⇔ 40 ⇔ 25 ⇔ 38 15151515 ⇔⇔⇔⇔ 10 ⇔ 19 ⇔ 13 ⇔ 5 ⇔ 3 ⇔ 12 ⇔ 7 ⇔ 16 ⇔ 20 ⇔ 35353535 ⇔⇔⇔⇔ 40 ⇔ 25 ⇔ 38 10101010 ⇔⇔⇔⇔ 13 ⇔ 5 ⇔ 3 ⇔ 12 ⇔ 7 ⇔ 15 ⇔ 19191919 ⇔⇔⇔⇔ 16 ⇔ 20 ⇔ 25252525 ⇔⇔⇔⇔ 35 ⇔ 40404040 ⇔⇔⇔⇔ 38 5555 ⇔⇔⇔⇔ 3 ⇔ 7 ⇔ 10 ⇔ 13131313 ⇔⇔⇔⇔ 12 ⇔ 15 ⇔ 16161616 ⇔⇔⇔⇔ 19 ⇔ 20 ⇔ 25 ⇔ 35 ⇔ 38383838 ⇔⇔⇔⇔ 40 3333 ⇔⇔⇔⇔ 5 ⇔ 7777 ⇔⇔⇔⇔ 10 ⇔ 12121212 ⇔⇔⇔⇔ 13 ⇔ 15 ⇔ 16 ⇔ 19 ⇔ 20 ⇔ 25 ⇔ 35 ⇔ 38 ⇔ 40 3 ⇔ 5 ⇔ 7 ⇔ 10 ⇔ 12 ⇔ 13 ⇔ 15 ⇔ 16 ⇔ 19 ⇔ 20 ⇔ 25 ⇔ 35 ⇔ 38 ⇔ 40
La liste « Li » à trier par le tri rapide La liste « Ls » à trier
pivotpivotpivotpivot
L2 Informatique Algorithmique et Structures de Données 2016-
Exercice 1Exercice 1Exercice 1Exercice 1 (8 points)(8 points)(8 points)(8 points)::: Soient les arbres binaires suivants ::
Arbre 1Arbre 1Arbre 1Arbre 1 (^) Arbre 2Arbre 2Arbre 2Arbre 2 Arbre 3Arbre 3Arbre 3Arbre 3 Représentation « Dynamique » « Statique standard » (0.5(0.5(0.5(0.5 point)point)point)point) « Statique séquentielle » (0.5(0.5(0.5(0.5 point)point)point)point)
Quelconque (0.25 point)(0.25 point)(0.25 point)(0.25 point) Quelconque (0.25 point)(0.25 point)(0.25 point)(0.25 point) AVL (0.25 point)(0.25 point)(0.25 point)(0.25 point)
Sinon Q Sommet TQ (suivant (Q) ≠ Nil) et (Prio(valeur(Q)) > Prio (X)) faire Q suivant (Q) Aff_suiv (P, suivant(Q)) ; Aff_suiv (Q, P)
Depiler(Sommet, X) (^) (0.5 point)(0.5 point)(0.5 point)(0.5 point)
Si NON Pilevide(Sommet) X ← Valeur(Sommet) ; Q ← Sommet ; Sommet ←Suivant(Sommet) Liberer(Q) Fsi
II. Ecrire les opérations du modèle de file circulaire (en utilisant le nombre des éléments du tableau nbELt pour calculer l’indice de la dernière case (indice queue)). (2 points)(2 points)(2 points)(2 points) Modèle Implémentation Initfile(F) F.Tête ←Max; F.NbElt ← 0 Filevide(F) Retourner (F.NbElt = 0) Filepleine(F) Retourner (F.NbElt = Max -1 ) Enfiler(F,X) (0.75 point)(0.75 point)(0.75 point)(0.75 point)
SI (NON Filepleine( F)) Queue ← (F.Tete + F.NbElt + 1) Mod Max F.elements[Queue] ← X F.NbElt ++ Defiler(F,X) (0.75 point)(0.75 point)(0.75 point)(0.75 point)
SI (NON Filevide(F)) F.Tete ← (F.Tete + 1)Mod Max X ← F.elements[F.Tete]
III.III.III.III.1.1.1.1. (0.25 point)(0.25 point)(0.25 point)(0.25 point) III.2. a (0.5 point)(0.5 point)(0.5 point)(0.5 point) III.2.b (0.25 point)(0.25 point)(0.25 point)(0.25 point) Type type 2 = structure Titre : chaîne de caractères Auteur : chaîne de caractères Fin
Type type 1 = structure Categorie : chaîne de caractères File : FA Fin
Fonction prio (val : type 1) : entier Retourner (val.File.NbElt)
III. 3. A. Procedure Nbre_Total_Livres (Sommet : * Maillon, Var Cpt : entier) (1 point)(1 point)(1 point)(1 point) Var P : * Maillon ; x : type 1 Debut CpCpCpCptttt 0000 TQ non Pilevide (Sommet) faire DTQ Depiler (Sommet, x) ; CptCptCptCpt Cpt + Prio(x)Cpt + Prio(x)Cpt + Prio(x)Cpt + Prio(x) ; Empiler (P,x) FTQ TQ non Pilevide (P) faire
((((0.5 point0.5 point0.5 point0.5 point))))
DTQ Depiler (P, x) ; Empiler (Sommet, x) FTQ Fin III. 3. B. Procedure Ajouter_Livre (Sommet : * Maillon, cat : chaîne de caractère, livre : type2) (1(1(1( point)point)point)point) Var P : * Maillon ; x : type 1 Debut TQ non Pilevide (Sommet) faire DTQ Depiler (Sommet, x) SiSiSiSi ((((x.x.x.x.categorie =categorie =categorie =categorie = catcatcatcat))) alors)alorsalorsalors enfiler (xenfiler (xenfiler (xenfiler (x....File, livre)File, livre)File, livre)File, livre) Empiler (P,x) FTQ TQ non Pilevide (P) faire DTQ Depiler (P, x) ; Empiler (Sommet, x) FTQ Fin III. 3. C. Procedure Afficher_Livres (Sommet : * Maillon, cat : chaîne de caractère) (1(1.(1(1...5 55 5 point)point)point)point) Var P : * Maillon ; x : type 1 ; F : FA, y : type 2 Debut TQ non Pilevide (Sommet) faire DTQ Depiler (Sommet, x) SiSiSiSi ((((x.x.x.x.categorie =categorie =categorie =categorie = catcatcatcat))) alors)alorsalorsalors DSIDSIDSIDSI TQ non Filevide (x.TQ non Filevide (x.File) faireTQ non Filevide (x.TQ non Filevide (x.File) faireFile) faireFile) faire DTQDTQDTQDTQ DDDefilerDefilerefilerefiler (x.File, y)(x.File, y)(x.File, y)(x.File, y) ;;; Ecrire (y;Ecrire (yEcrire (y)Ecrire (y)) ;);;; Enfiler (F, y)Enfiler (F, y)Enfiler (F, y)Enfiler (F, y) FTQFTQFTQFTQ x.Filex.Filex.Filex.File FFFF FSIFSIFSIFSI Empiler (P,x) FTQ TQ non Pilevide (P) faire DTQ Depiler (P, x) ; Empiler (Sommet, x) FTQ Fin