Vous êtes sur la page 1sur 4

TEST 2 TP (Durée 1 heure)

Seulement ces documents1 sont autorisés.


Les structures de données et les algorithmes doivent être écrits en LANGAGE C

Exercice 01 (4 points) : Etant donné un texte introduit par l’utilisateur via un fichier texte
« Fentree.txt », on veut représenter ce texte à l’aide d’une Liste Linéaire Chaînée (LLC) et offrir la
possibilité de rechercher un mot donné et de mettre les coordonnées de toutes ses occurrences dans une
Pile. La structure de données de la LLC ainsi que son modèle est définie comme suit :
typedef struct coord { int NLig; int PosLig; }coord; ptrM allouer () {return ((ptrM) malloc( sizeof(maillon)));}
typedef struct typeval { char mot [30]; coord cd; }typeval; void liberer (ptrM* P) { free (*P); *P = NULL;}
typedef struct maillon { typeval val ; struct maillon*suiv ; }maillon; typeval valeur( ptrM P) { return(P->val) ;}
typedef maillon* ptrM; ptrM suivant(ptrM P) { return( P->suiv );}
void aff_suiv(ptrM P, ptrM Q) { P->suiv = Q;}
void aff_val(ptrM P, typeval v) { P->val=v;}
1. Rappeler la fonction CreerLLC qui permet de créer une LLC à partir des données d’un fichier
texte « Fentree.txt ».
2. La Pile est une LLC unidirectionnelle qui contient les coordonnées d’un mot. Donner sa structure
de données et son modèle (InitPile, PileVide, PilePleine, Empiler, Depiler).
3. En utilisant les modèles de la LLC et de la Pile, écrire la fonction CreerPile qui permet de créer
une Pile contenant les coordonnées de toutes les occurrences d’un mot de la LLC. La LLC et le
mot sont passés comme paramètres d’entrée de la fonction.
4. Ecrire la fonction SauvegarderPile qui permet de sauvegarder la pile dans un fichier « Fsortie.txt ».

Solution de l’exercice 1 :

1 Résumé du langage C, Annexe 1 Manipulation des chaînes de caractères & Annexe 2 Manipulation des fichiers textes
1/4
2/4
Exercice 02
02 (4 points) : Un arbre binaire est un arbre où chaque nœud est connecté à deux sous
arbres (un sous-ordre gauche et un sous arbre droit). Un Arbre Binaire de Recherche (ABR) est un arbre
binaire ordonné tel que pour tout nœud « i »: toutes les valeurs du sous arbre gauche de « i » sont
strictement inférieures à la valeur de « i », et toutes les valeurs du sous arbre droit de « i » sont
supérieures ou égales à la valeur de « i ». La structure de données de l’ABR ainsi que son modèle est
définie comme suit :
typedef struct Tnoeud { int Info; struct Tnoeud* FG; struct Tnoeud* FD;} Tnoeud; void aff_FD(ptrN R, ptrN Q) {R->FD=Q;}
typedef Tnoeud* ptrN; ptrN CreerNoeud ( int x)
int Info(ptrN R) {return R->Info;} { ptrN R = ((ptrN) malloc( sizeof(Tnoeud)));
ptrN FG(ptrN R) {return R->FG;} aff_Info(R, x);
ptrN FD(ptrN R) {return R->FD;} aff_FD(R, NULL); aff_FG(R, NULL);
void aff_Info(ptrN R, int v) {R->Info = v;} return(R); }
void aff_FG(ptrN R, ptrN Q) {R->FG=Q;} void libererNoeud (ptrN R) {free(R);}
En utilisant le modèle de l’ABR, écrire:
1. La fonction itérative insererABR qui permet d’insérer une valeur dans un ABR
2. La fonction récursive creerABR qui permet de créer un ABR à partir de n valeurs lues
3. La fonction récursive rechercherABR qui permet de rechercher l’adresse du premier nœud qui
contient une valeur donnée.
4. La procédure itérative qui permet d’afficher le résultat du parcours largeur d’un ABR. On suppose
que le modèle dynamique de la file est déjà implémenté (InitFile, FileVide, FilePleine, Enfiler et
Defiler)

Solution de l’exercice 2 :

3/4
4/4

Vous aimerez peut-être aussi