Vous êtes sur la page 1sur 4

Université Aboubekr BELKAID

‫ﻛﻠﯿﺔ ﺍﻟﻌﻠﻭﻡ – ﺘﯿﺠﺎﻨﻲ ﻫﺩﺍﻡ‬


Faculté des Sciences
‫ﻗﺴﻡ ﺍﻹﻋﻼﻡ ﺍﻵﻟﻲ‬
Département d’informatique

Module : Algo Année universitaire 2023-2024


Classe : L2- Informatique
TP N° 06
Partie 1 : LES PILES – LES FILES
Exercice 1:
La Pile est une structure de données qui permet de stocker les données dans l’ordre LIFO (Last In First Out = Dernier
Entré Premier Sorti). L’ajout et la suppression des données se font en sommet de la pile.
Le sommet de la pile est le dernier élément inséré.
Les opérations de base définies sur le type Pile sont:
InitialiserPile(P) : initialiser la pile P.
Empiler(P,X) : insérer X en sommet de la pile P
Depiler(P) : supprimer le sommet de la pile P (si la pile P n’est pas vide)
Sommet(P) : retourner le sommet de la pile P (si la pile P n’est pas vide)
PileVide(P) : tester si la pile P est vide.
AfficherPile(P) : afficher les éléments de la pile P.
1- Donner la structure adéquate pour représenter une PILE en utilisant les listes chainées.
2- Réaliser les fonctions de bases précédentes puis les tester dans le programme principal.
Exercice 2:
La File est une structure de données qui permet de stocker les données dans l’ordre FIFO (First In First Out =
Premier Entré Premier Sorti). L’insertion des données se fait à la fin de la File (Queue), mais la suppression se fait au
début de la File (Tête).
Le tête de la File est le premier élément inséré, et la queue de la File est le dernier élément inséré.
Les opérations de base définies sur le type File sont:
InitialiserFile(F) : initialiser la File F.
Enfiler(F,X) : insérer X en queue de la File F .
Defiler(F) : supprimer le sommet de la File F (si la File F n’est pas vide).
Tete(F) : retourner la tête de la File F (si la File F n’est pas vide).
Queue(F) : retourner la queue de la File F (si la File F n’est pas vide).
FileVide(F) : tester si la File F est vide.
AfficherFile(F): afficher les éléments de la File F.
1
1- Donner la structure adéquate pour représenter une FILE en utilisant les listes chainées.
2- Réaliser les fonctions de bases précédentes puis les tester dans le programme principal.

Exercice 3:
En utilisant une pile, écrivez un programme qui vérifie si un texte lu sur l'entrée standard est correctement
parenthèse. Il s'agit de vérifier si à chaque parenthèseur fermant rencontré},], ou ) correspond son parenthèseur
ouvrant {, [ ou (.
Par exemple : la chaîne ((( ) ) ( ) ) ( ) est bien parenthèsée et proprement écrite. Mais les chaînes )( )( ou ( ) ) ne le
sont pas.

Exercice 4 :
1. Soient deux files F1 et F2 et une pile P. La file F1 contient des éléments entiers, F2 et P sont vides.
Ecrire une fonction nommée Deplacer_File qui dépose dans F2 les éléments impairs de F1 et laisse dans F1 les
éléments pairs dans l’ordre inverse.
Exemple
- F1 a pour éléments [1,2,3,4,5,6] (1 est le 1er élément de F1).
- Après l’exécution de la fonction Deplacer_File on aura : F1 [6,4,2] et F2 [1,3,5].

2. Soit deux files F1 et F2 d’entiers triées par ordre croissant.


Ecrire une fonction Fusionner_Files qui permet de fusionner les deux files F1 et F2 afin d’obtenir une seule file
F triée par ordre croissant.

3. Soient deux piles P1 et P2 et une file F. La pile P1 contient des entiers, P2 et F sont vides.
Ecrire une fonction Rotation_Pile qui permet d’effectuer la rotation de N éléments de la pile P1. Cette fonction
doit avoir comme arguments la pile P1 et l’entier N et devra retournée la pile obtenue après rotation.
Exemple
• Si P1 contient les éléments [2,6,9,8,12] (12 est le sommet de P1) et N = 2,
• Après l’exécution de la fonction rotation on aura : P1 [8,12,2,6,9]

2
Partie 2 : LES ARBRES
Exercice 1 :
- Ecrire en langage C une fonction ajouter_noeud qui prend en arguments la racine d’un arbre binaire de recherche
ABR et une valeur entière x et qui permet d’insérer un nœud de valeur x dans cette ABR. Cette fonction doit retournée
la racine de l’ABR.
- Ecrire une fonction supprime_noeud qui permet de supprimer un entier de l’arbre. L’algorithme global est le
suivant :
- Si le nœud à enlever est une feuille, on l’enlève.
- Si c’est un sommet qui n’a qu’un fils, on le remplace par ce fils.
- Si c’est un sommet qui a deux fils, le remplacer par le sommet de plus grande valeur dans le sous-arbre
gauche, puis supprimer ce sommet en appelant récursivement la fonction.
- Dans le programme principal, créez l’ABR correspondant à la suite de valeurs suivante :
5 1 11 9 3 10 2 15 6 4 20 13
- Supprimez successivement les nœuds suivants : 13, 1 et 11
- Ecrire une fonction qui permet d’afficher l’ordre des nœuds de l’ABR correspondant au parcours infixé.
- Ecrire une fonction tri qui permet de trier un tableau d'entiers donné en argument à l'aide d'un arbre binaire de
recherche. Cette fonction doit avoir comme arguments un tableau non trié ainsi que sa taille et devra retourner le
nouveau tableau trié par ordre croissant en utilisant un ABR.

Exemple d’exécution:

L’ordre des nœuds après création de l’ABR est : 1 2 3 4 5 6 9 10 11 13 15 20

L’ordre des nœuds après suppression est : 2 3 4 5 6 9 10 15 20

Entrez les valeurs du tableau : 10 8 2 5 6 3 14 22 19

Le tableau obtenu est : 2 3 5 6 8 10 14 19 22

3
Exercice 2:
- Un Arbre Binaire de Recherche (ABR) à la particularité suivante :
Pour chaque nœud dans l’arbre ayant une valeur V :
i. Tous les fils se trouvant à droite ont une valeur supérieure à V.
ii. Tous les fils se trouvant à gauche ont une valeur inférieure à V.

- Un arbre binaire est dit complet si chacun de ses nœuds possède zéro ou deux fils.

1- Ecrire une fonction récursive qui teste si un arbre binaire, représenté par sa racine en entrée, est un arbre binaire
de recherche (ABR).

2- Ecrire une fonction récursive qui teste si un arbre binaire, représenté par sa racine en entrée, est un arbre binaire
complet.

3- Dans le programme principal, tester si un arbre est un arbre binaire de recherche complet.

Vous aimerez peut-être aussi