j. BAKKAS
Exercice 2
On considre la file illustre par le schma suivant :
Les lments de la file sont dfinis par la structure nomme element compose de deux champs (data et next). Le champ data contient la valeur (ici un float) de llment et le champ next est un pointeur vers llment suivant de la file dattente (ou NULL si cest le dernier lment). 1. Ecrire le type struct element et redfinir ce type en elt. Dfinir le type file comme une structure contenant 3 champs :
nb_elt : de type entier indiquant le nombre dlments dans la file dattente (0 si file vide), tete : de type pointeur sur elt pointant le premier lment de la file (NULL si file vide), queue : de type pointeur sur elt indiquant ladresse du dernier lment de la file (NULL si file vide).
Dans la suite, les prototypes des fonctions cree_file, enfile, defile, affiche et vide : 2. Dfinir une fonction cree_file qui cre une file dattente vide (i.e. nb_elt = 0, front = NULL et back = NULL) et qui renvoie ladresse de cette file vide (un pointeur sur le type file) si la cration est russie et qui renvoie NULL sinon. Le prototype de cree_file sera donc : file * cree_file ( void ); 3. Ecrire une fonction enfile qui ajoute un lment la fin de la file dattente. Cette fonction doit prendre 2 arguments (lesquels ?) et renvoyer un entier : 1 si lajout est russi et 0 sinon. Ecrire une fonction defile qui renvoie la valeur du premier lment de la file dattente avant de le dtruire. 4. En utilisant une boucle while, crire une fonction affiche de prototype void affiche ( file * f); Taille de la file : 4 2 Contenu : 1.5 4 3.14159 2 6 4.78 5. En utilisant une boucle for, crire une fonction vider qui dtruit une file dattente (destruction de tous les lments). 6. Ecrire la fonction principal main() pour tester les fonctions prcdentes 7. Extension : Ecrire une fonction fusion qui fusionne 2 files dattente en respectant les rgles suivantes : la premire des 2 listes passes en argument contiendra la liste fusionne, la fusion se fait en prenant successivement un lment de la liste 1 puis un lment de la liste 2.