Upload files to "DEV.3.2/cours"

This commit is contained in:
2025-12-17 09:50:45 +01:00
parent 197de8af41
commit 58069bce95

44
DEV.3.2/cours/5.Files.md Normal file
View File

@@ -0,0 +1,44 @@
## Principe
Une file supporte les opérations suivantes :
* **enqueue** ajoute un élément à la file.
* **dequeue** retire et renvoie l'élément le plus ancien.
* **empty** détermine si la file est vide.
Une file préserve l'ordre d'entrée des éléments. Elle est FIFO (First in First Out) : premier arrivé, premier servi. On utilise des files dans les tampons, les filles d'attente.
## En java
L'interface **Queue**, qui hérite de **Collection**, représente une file.
* enqueue -> add (offer)
* dequeue -> remove (poll)
* empty -> isEmpty
Les classes **ArrayDeque** et **LinkedList** réalisent Queue.
On peut coder une file en se basant sr la classe abstraite **AbstractQueue**.
## À faire soi-même
On peut coder une file avec un tableau.
| | B | C | | |
| --- | ----- | --- | --- | --- |
| | début | | fin | |
On doit maintenir deux indices pour savoir das quel intervalle sont stockés les éléments. Le tableau est considéré comme circulaire : un indice qui devient trop grand retourne 0.
file vide :
| | | | | | |
| --- | --- | --- | --------- | --- | --- |
| | | | fin/début | | |
file pleine :
| G | B | C | D | E | F |
| --- | --------- | --- | --- | --- | --- |
| | début/fin | | | | |
Il faut ajouter un attribut pour distinguer ces deux cas (nombre d'éléments, dernière opération, etc).
On peut dégrader les performances à chaque fois que la capacité est insuffisante, ou on peut refuser les enqueue surnuméraires et ainsi obtenir une **file bornée**.
On peut aussi coder une file avec une liste chaînée.
On doit se souvenir de la référence au premier et au dernier maillon. Les éléments sont stockés du plus ancien au plus récent.
!! Attention les deux références peuvent être modifiées par enqueue et pas dequeue.