Files
DEV/DEV.3.2/cours/5.Files.md

1.9 KiB

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.