web-dev-qa-db-fra.com

Sur une file d'attente, quelle fin est la "tête"?

J'avais toujours pensé que la "tête" d'une file d'attente en tant qu'élément suivant à lire et n'a jamais réellement interrogé cet usage. Donc, une bibliothèque de liste liée que j'ai écrite, qui est utilisée pour maintenir les files d'attente, codifie cette terminologie: nous avons un list1_head macro qui récupère le premier élément; Lorsque vous utilisez cette bibliothèque dans une file d'attente, ce sera le premier élément à supprimer.

Mais un nouveau développeur de l'équipe a été utilisé pour avoir mis en œuvre l'inverse. Il a décrit une file d'attente comme un comportement comme un chien: vous insérez à la tête et enlevez à la queue. C'est une description assez intelligente que j'ai l'impression que son utilisation doit être plus répandue, et je n'ai pas une description évocatrice similaire de mon usage préféré.

Donc, je suppose, il y a deux questions connexes: 1, que signifie la "tête" d'une file d'attente? et 2, pourquoi utilisons-nous le mot "Head" pour décrire ce concept?

18
Aidan Cully

Vous entrez à l'arrière de la file d'attente et partez de l'avant. Dans la plupart des sociétés, cela impliquerait la tête est le front et les articles sont retirés de la tête.

Le Javadoc pour la file d'attente semble être d'accord avec la définition classique (c'est-à-dire votre originale):

Quelle que soit la commande utilisée, la tête de la file d'attente est cet élément qui serait supprimé par un appel à supprimer () ou de sondage (). Dans A FIFO File d'attente, tous les nouveaux éléments sont insérés à la queue de la file d'attente.

29
Spencer Kormos

Ce que les gens des États-Unis appellent couramment une ligne, comme dans la chose que vous vous trouvez au bureau de poste, les personnes dans d'autres pays anglophones appellent une file d'attente. Donc, il est plus facile pour les Américains de garder la terminologie droite si vous remplacez "la ligne" pour "la file d'attente". En d'autres termes, lorsque vous êtes dans la tête ou devant, de la ligne, vous êtes le prochain à appeler.

8
Karl Bielefeldt

Les deux conventions sont utilisées communes. Dans mon expérience, lorsque vous parlez de files d'attente en général, l'élément de tête est le prochain à sortir de la file d'attente et la queue est l'endroit où des éléments entrent dans la file d'attente. Ceci est cohérent avec l'utilisation anglaise de tous les jours - nous entrons en ligne à l'arrière, et le prochain servi est à l'avant, ou la tête. (Et si vous coupez, c'est à l'arrière de la ligne pour vous!)

Cependant, lorsqu'une file d'attente (AKA FIFO) est mise en oeuvre en tant que tampon à annea , les termes sont généralement inversés, car la partie utilisée de la tampon d'anneau ressemble à un serpent se déplacer dans un cercle. En supposant que le serpent se déplace de l'avant, la tête est naturellement la fin qui conduisant le mouvement, qui est également la fin à laquelle les éléments entrants sont insérés.

4
I. J. Kennedy