Uploaded by Kata Esme

ExamenAlgoL2-6Janvier2023 2P

advertisement
@Brahim DERDOURI
Examen-AlgoSD-L2-Info
UNIVERSITE DE CERGY-PONTOISE
DEPARTEMENT D'INFORMATIQUE
Algo & Structures de Données- L2-Info, 2022-23
© Brahim Derdouri
Vendredi 6 Janvier 2022
DUREE 2h00 HEURES
DOCUMENTS NON AUTORISES
EXAMEN D’ALGO-SD L2-INfO-S3
**********************************************PARTIE 1 **************************************
Exercice 1 : Implémentation contiguë d’un Ensemble (4.5Pts=1.0+0.75+1.25+1.5)
Le but de cet exercice est la gestion des ensembles en utilisant une représentation contiguë.
Un ensemble est constitué d’un nombre fini sans répétitions de ses éléments.
On représente le type ensemble par la structure dynamique suivante :
typedef int TElement;
typedef struct {
int nbElemMax;
//nbre d’éléments max qu’un ensemble peut contenir.
int nbElem;
// nombre d’éléments présents dans l’ensemble.
TElement *tab;
//Stockage des éléments de l’ensemble.
} Ensemble ;
Ecrire en C, les algorithmes suivantes :
1) Effectuer L’allocation mémoire d’un ensemble en fonction d’un entier donné représentant le nombre maximum
d’éléments qui peut contenir l’ensemble.
2) Effectuer la libération mémoire d’un ensemble donné.
Ecrire en C (ou en algorithmique) les algorithmes suivants :
3) Déterminer l’intersection de deux ensembles donnés qu’on suppose quelconque. L’intersection de deux ensembles sera
4)
placée dans un troisième ensemble.
Tester si un ensemble trié donné est inclus dans un autre ensemble trié donné.
@Brahim DERDOURI
Examen-AlgoSD-L2-Info
**********************************************PARTIE 2 **************************************
Exercice3 : Arbre d’Expression (5Pts=4*1.25)
On considère les expressions arithmétiques (chaîne de
caractères) sur les entiers n’utilisant que les opérateurs
binaires +, -, *, /. Ces expressions peuvent être
représentées par des arbres binaires dite aussi arbres
d’expressions dont les nœuds internes sont étiquetés
par l’un des quatre opérateurs tandis que les feuilles
sont étiquetées par des entiers. Pour simplifier, on
suppose que les opérandes sont des entiers composé
d’un seul chiffre.
1) Ecrire en C, un algorithme qui effectue l’évaluation
d’un arbre d’expression donné.
Ecrire en C (ou en algorithmique) les algorithmes
suivants :
2) Déterminer le plus grand opérande présent dans un
arbre d’expression donné supposé non vide.
3) En parcourant l’arbre d’expression qu’une seule
fois, déterminer le nombre d’opérandes et le
nombre d’opérateurs présent dans un arbre
d’expression donné.
4) Tester si deux arbres d’expressions donnés aExp et
bExp ont les mêmes structures, en ignorant les
données associées aux nœuds.
L’arbre d’expression représentant l’expression
Exp=((3+(6*2))-(4*(9-3)))
L’arbre d’expression est représenté par la structure de
données suivante :
typedef char TElement;
typedef struct noeud{
TElement donnee;
struct noeud *filsG;
struct noeud *filsD;
}*ArbreExp;
Rappels : 1) On dit qu'un ensemble A est inclus dans un ensemble B si tous les éléments de A
sont aussi éléments de B.
Exercice4 : Arbre Binaire && Arbre Binaire de Recherche (5.0Pts=1.25+1+0.75+0.5+1.5+0.5)
2) L’intersection de deux ensembles A et B est formée par les éléments qui sont dans A et dans B,
c’est-à-dire par les éléments présents à la fois dans A et B (en évitant les répétitions des éléments
identiques)
1)
L’arbre binaire (resp l’arbre binaire de recherche) est
représenté par la structure de données ci-contre :
typedef int TElement;
typedef struct noeud{
TElement donnee;
Ecrire en C, l’algorithme d’insertion d’un élément
struct noeud *filsG;
donné dans un arbre binaire de recherche donné.
struct noeud *filsD;
}*Arbre;
Exercice 2 : Implémentation chaînée d’un Ensemble (5.5Pts=0.75+0.75+1+1.25+0.75+1)
Le but de cet exercice est la gestion des ensembles en utilisant une représentation chaînée. Un ensemble est
constitué d’un nombre fini sans répétitions de ses éléments. Pour faciliter la gestion des ensembles, on rajoutera
deux adresses : la première adresse pour indiquer la tête et la seconde adresse pour indiquer la queue.
Un ensemble est représenté par la structure de données suivante :
tyedef int TElement;
typedef struct{
TElement donnee ;
struct cellule* suivant ;
}*Liste ;
typedef struct {
Liste tete;
Liste queue;
}Ensemble;
32
20
17
32
29
27
Ecrire en C, les algorithmes ci-dessous :
1) L’insertion en tête d’un élément donné dans un ensemble donné.
2) L’insertion en queue d’un élément donné dans un ensemble donné.
3) L’insertion classée d’un élément donné dans un ensemble trié donné. (Après l’insertion l’ensemble restera trié.)
4) Transformer un ensemble quelconque en un ensemble trié.
5) La suppression en tête dans un ensemble donné supposé non vide.
6) La suppression d’un élément donné dans un ensemble trié donné supposé non vide.
14
32
11
43
32
Figure 1
Figure 2
2) Ecrire en langage algorithmique (ou en C), l’algorithme de construction d’un arbre binaire de recherche à partir
d’un arbre binaire donné parcouru selon le parcours en largeur.
3) Appliquer graphiquement (sous forme d’arbres) votre algorithme de construction à l’arbre binaire ci-dessus
(figure1).
4) Décrire le principe de suppression d’un élément donné dans un arbre binaire de recherche donné.
5) Ecrire en C, l’algorithme de suppression d’un élément donné dans un arbre binaire de recherche donné.
6) Appliquer votre algorithme à la suppression de l’élément 5 dans l’arbre binaire de recherche ci-dessus (figure2).
1
2
@Brahim DERDOURI
Examen-AlgoSD-L2-Info
NOTES
CHAQUE PARTIE DOIT ETRE REDIGEE SUR UNE FEUILLE SEPAREE
 Les réponses aux questions doivent être claires et justifiées.
 Pour chaque algorithme (ou fonction en C), vous aurez soin d’expliquer les différentes actions de l’algorithme
ainsi que le passage des paramètres.
 Chaque algorithme (ou fonction en C) supplémentaire utilisé doit être défini.
 On suppose connues les primitives des piles et des files et donc vous pouvez l’utiliser sans les redéfinir.
*************************************************Annexes***********************************************
On suppose connu les algorithmes suivants :
EXERCICE 1 : IMPLEMENTATION CONTIGUË D’UN ENSEMBLE
Fonction nbEltsMax : Ensemble  Entier
Fonction nbElts : Ensemble  Entier
Fonction iEmeElts : Entier x Tableau  TElement
Fonction initE : Ensemble  Ensemble
Fonction estVideE : Ensemble  Boolean
Fonction estPleinE : Ensemble  Boolean
EXERCICE 2 : IMPLEMENTATION CHAINEE D’UN ENSEMBLE
Fonction donnee : Liste  TElement
Fonction suivant : Liste  Liste
Fonction initL : []  Liste
Fonction estVideL : Liste  Boolean
Fonction tete : Ensemble  Liste
Fonction queue : Ensemble  Liste
EXERCICE 3 & 4 : STRUCTURE ARBRES BINAIRES
Fonction donneeA : Arbre  TElement
Fonction filsGauche : Arbre  Arbre
Fonction filsDroit : Arbre  Arbre
Fonction initA : []  Arbre
Fonction estVideA : Arbre  Booléenne
Fonction creatFeuille : TElement  Arbre
Fonction creatNoeud : TElement x Arbre x Arbre Arbre
STRUCTURE PILE
STRUCTURE FILE
Fonction initP : []Pile
Fonction initF : []File
Fonction estVideP : Pile  Booléenne
Fonction estVideF : File  Booléenne
Fonction estPleinP: Pile  Booléenne
Fonction estPleinF: File  Booléenne
Fonction sommetP : Pile TElementP
Fonction sommetF : File TElementF
Fonction empiler : TElementPxPile Pile
Fonction enfiler : TElementFxFile File
Fonction depiler : Pile  Pile
Fonction defiler : File  File
3
Related documents
Download