La file (FIFO)

La file : enfiler et défiler

Le principe FIFO

Une file (en anglais queue) fonctionne à l'opposé de la pile : le premier élément ajouté est le premier à sortir. On parle de FIFO, pour « First In, First Out » (premier entré, premier sorti). C'est exactement une file d'attente au supermarché : la première personne arrivée est la première servie, quel que soit le monde qui arrive ensuite.

Les deux opérations de base

  • enfiler (enqueue) : ajouter un élément à l'arrière de la file ;
  • défiler (dequeue) : retirer et renvoyer l'élément à l'avant de la file.

Schéma : évolution d'une file

File vide :                  []

enfiler(A)  ->                [A]
enfiler(B)  ->                [A, B]
enfiler(C)  ->                [A, B, C]         (A est en tête, C vient d'arriver)

defiler() -> A                 [B, C]           (A sort en premier, il était le premier arrivé)
defiler() -> B                 [C]

vue horizontale :
   sortie (defiler)                     entree (enfiler)
        <---   [ A ][ B ][ C ]   <---
             (tête, sort en 1er)     (queue, dernier arrivé)

Pile ou file, ne pas confondre

La différence tient entièrement à l'extrémité où l'on retire l'élément : au même côté que l'ajout pour une pile (LIFO), à l'opposé de l'ajout pour une file (FIFO). Un moyen simple de retenir : la pile s'empile comme une pile d'assiettes, la file se comporte comme une file d'attente humaine.

Piège classique

Une erreur fréquente est d'implémenter une file en pensant « premier arrivé, premier sorti » mais de retirer par erreur le dernier élément ajouté : on obtient alors une pile déguisée, avec un ordre de sortie totalement différent de celui attendu.