Université Cadi Ayyad Programmation II Faculté Polydisciplinaire de Safi Filière SMI (S4)
2019 - 2020
Série n°3 : Piles-Files
Exercice1
Pour créer une file à l'aide d'une liste chainée, on se propose d'utiliser un pointeur sur le début de la liste et un autre sur sa fin.
Une file sera donc définie par:
typedef struct element {
int val;
struct element* suivant;
} element; /*élément de la file*/
Typedef struct {
element* debut; /*Pointeur vers premier élément de la file*/
element* fin; /*Pointeur vers dernier élément de la file*/
} File;
Ecrire des fonctions en C qui permettent de :
enfiler un élément
défiler un élément,
récupérer la tête de la file,
vider le contenue de la file
Exercice2
Ecrire un programme complet en C qui permet
1. d'empiler/dépiler un élément de type int (ou double, char ou chaine de caractères) dans une pile, 2. d'afficher les valeurs d'une pile,
3. de calculer la longueur d'une pile,
4. de calculer la somme et le produit des éléments d'une pile, 5. de rechercher le maximum et le minimum d'une pile
Université Cadi Ayyad Programmation II Faculté Polydisciplinaire de Safi Filière SMI (S4)
2019 - 2020
Exercice3
Ecrire une fonction qui permet d’inverser une file à l’aide d’une pile.
Exercice 4
On se propose de se servir une pile pour calculer une expression arithmétique exprimé en notation polonaise inversée, dont voici un exemple:
3 12 3 – 3 / 1 - * L'expression infixée équivalente qui utilise des parenthèses est :
3*(((12-3)/3)-1)
Ecrire un algorithme qui calcul le résultat d'une expression arithmétique postfixée.
Les données seront comme une suite de caractères. Chaque donnée est séparée des autres par le caractère espace. La méthode consiste à utiliser une pile pour conserver les valeurs numériques au fur et à mesure de leur lecture, et à effectuer un traitement quand un opérateur est lu.
Ce traitement doit dépiler les deux dernières valeurs présentes dans la pile, effectuer l'opération, puis empiler le résultat.
Le résultat final est contenu dans la pile. Noter que les opérations acceptées sont -, +, *, /.
Exercice 5
On se donne une file d’entiers que l’on voudrait trier avec le plus grand élément en fin de file.
On n’est autorisé à utiliser que la fonction filevide, enfiler, defiler et les opérations suivantes :
defilerenfiler : Defile le premier élément de la première file et l’ajoute à la deuxième file.
Comparer : Retourne 1 si le premier élément de la première file et plus grand ou égal au premier élément de la deuxième file et 0 sinon.
1. Définir les fonctions filevide, emfiler, defiler, defilerenfiler et comparer.
2. Ecrire un programme de tri qui utilise seulement ces opérations, et 3 files. La file1 contiendra
les entiers a trier, file 2contiendra les entiers tries après exécution, et la file 3 pourra servir de
file auxiliaire
Université Cadi Ayyad Programmation II Faculté Polydisciplinaire de Safi Filière SMI (S4)
2019 - 2020