File bornée
Énoncé
On va implanter le type abstrait file qui fonctionne selon la politique du « premier entré, premier sorti » : on retire les éléments dans le même ordre que celui dans lequel ils ont été insérés.
Pour cette implantation, on va utiliser un tableau statique pour stocker les valeurs. Ce tableau sera géré selon le modèle du « tableau circulaire ». Cela signifie que si on arrive au bout du tableau mais qu'il y a des cases libres au début (car on a retiré des valeurs anciennes), alors on utilisera les cases du début lorsqu'on aura besoin d'insérer de nouvelles valeurs. Le dessin ci-dessous illustre ce principe de tableau circulaire :
Comme on utilisera un tableau statique pour stocker les valeurs de la file, on définira une constante CAPACITE = 5
en haut du programme indiquant la taille fixe du tableau statique.
Pour rappel, voici le lien vers le document résumant les notions de type abstrait et de structure de données.
On pourra tester les fonctions qu'on va écrire avec le programme principal ci-dessous.
On donne aussi deux fonctions de base pour comprendre comment implanter la file : afficher
et creer
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 |
|
Création de la file
La fonction creer
qui renvoie une nouvelle file vous est donnée.
On a choisi de représenter la file sous la forme de 3 éléments :
- un entier qui représente l'indice de l'élément le plus ancien de la file, c'est à dire celui qui a été inséré avant tous les autres encore présents dans la file ;
- un autre entier qui contient le nombre d'éléments dans la file (à ne pas confondre avec la taille du tableau représentée par la constante
CAPACITE
ci-dessus) ; - un tableau qui contient tout simplement les valeurs stockées dans la file, dans les indices
[0 .. CAPACITE-1]
.
Affichage de la file
On donne aussi la fonction d'affichage de la file qui va utiliser les variables définies ci-dessus.
Insertion d'un élément dans la file
Implantez la fonction inserer(tab, idx_ancien, nbr_elem, val)
qui va insérer la valeur val
dans la file.
Cette fonction renvoie le nouveau nombre d'éléments de la file après l'insertion. Attention à bien réfléchir à ce qui doit se passer si on essaie d'insérer une valeur dans une file déjà pleine en regardant la fonction test_inserer
fournie.
Suppression d'un élément dans la file
On va ensuite implanter la fonction retirer(tab, ix_ancien, nbr_elem)
qui doit retirer la valeur la plus ancienne présente dans la file.
Cette fonction renvoie l'indice du nouvel éléments le plus ancien, le nouveau nombre d'éléments ainsi bien sûr que la valeur extraite.
Là encore, il faut faire attention au cas particulier de la file vide en regardant la fonction test_retirer
fournie.
Correction
Cliquez ici pour révéler la correction.
fifo.py
:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 |
|