Vous êtes sur la page 1sur 2

Université Abdelmalek Essaâdi

Faculté des Sciences et Techniques d’Al-Hoceima


Département de Mathématiques Informatique
Parcours : MIP – S4
Année universitaire : 2019 - 2020
TP du Module M22 : « Structures de données en C »
 TP n° 7 et 8 : Piles et Files 

Exercice 1 (TP n° 7) :

Considérons une pile d’assiettes sales dans une cuisine (figure 1). La pile, initialement vide, se
remplit au fur et à mesure que les assiettes sont posées l’une au-dessus des autres.

Figure 1 : Pile d’assiettes

On propose de gérer cette pile d’assiettes en utilisant une liste simplement chaînée. Une assiette
est caractérisée par son code (entier) et sa couleur.

1) Définir les structures assiette et pile nécessaires à la gestion de cette pile.

2) Ecrire la fonction pile* initialiser_Pile() qui permet de créer une pile vide d’assiettes.
La fonction renvoie la pile créée.

3) Ecrire la fonction pile* empiler(pile *p, assiette *a) qui empile l’assiette a sur la pile
p et retourne la nouvelle pile.

4) Ecrire la fonction pile* depiler(pile *p) qui retire le sommet de la pile p et retourne la
nouvelle pile. Traiter le cas où la pile est vide.

5) Ecrire une procédure récursive void afficher_Pile(assiette *sommet) qui affiche les
assiettes d’une pile dont le sommet est passé en paramètres.

6) Ecrire un programme C permettant de tester les fonctions définies ci-dessus. Le programme


permet de :

 saisir des assiettes au clavier (code et couleur) jusqu’à ce que l’utilisateur entre un code
d’assiette qui vaut 0 ;
 empiler les assiettes au fur et à mesure de leur saisi ;
 afficher les assiettes ;
 dépiler deux assiettes ;
 afficher à nouveau les assiettes.

Pr. El Mahouti TP-Structures de données en C


Exercice 2 (TP n° 8) :

On se propose de modéliser une file constituée de piles d’assiettes sales dans une cuisine de
restaurant (figure 2).

Figure 2 : Une file de piles d’assiettes

Les piles d’assiettes sont posées au fur et à mesure qu’elles arrivent en cuisine dans une file.
Le plongeur nettoie les assiettes en les prenant, une par une, sur le dessus de la première pile
stockée.

7) Modifier la structure pile (exercice 1) pour qu’elle serve de structure de base de la file
d’assiettes.

8) Proposer une structure de données file qui permet de modéliser le problème.

9) Ecrire la fonction file* initialiser_File() qui permet d’initialiser une file vide de piles
d’assiettes. La fonction retourne la file créée.

10) Écrire une fonction file *enfiler(file *f, pile *p) permettant d’ajouter une pile
d’assiettes p dans la file f.

11) Ecrire la fonction file *defiler(file *f) qui permet de retirer une pile d’assiettes de la file
f et retourne la nouvelle file.

12) Écrire une fonction file *plonger(file *f) permettant au plongeur de retirer une assiette
pour la nettoyer.

13) Ecrire une procédure void afficher_File(file *f) qui affiche les piles d’assiettes de la
file f.

14) Tester les fonctions définies ci-dessus.

Pr. El Mahouti TP-Structures de données en C

Vous aimerez peut-être aussi