Eu sempre pensei que o "cabeçalho" de uma fila era o próximo elemento a ser lido, e nunca questionei esse uso. Portanto, uma biblioteca de lista vinculada que escrevi, usada para manter filas, codificou essa terminologia: temos uma list1_head
macro que recupera o primeiro elemento; ao usar esta biblioteca em uma fila, este será o primeiro elemento a ser removido.
Mas um novo desenvolvedor da equipe estava acostumado a ter filas implementadas ao contrário. Ele descreveu uma fila como se comportando como um cachorro: você insere na cabeça e remove na cauda. Essa é uma descrição suficientemente inteligente para que eu ache que o uso dele deve ser mais difundido e não tenho uma descrição igualmente sugestiva do uso preferido.
Então, acho que existem duas questões relacionadas: 1, o que o "cabeçalho" de uma fila significa para você? e 2, por que usamos a palavra "cabeça" para descrever esse conceito?
fonte
Respostas:
Você entra na parte de trás da fila e sai pela frente. Na maioria das sociedades, isso implicaria que a cabeça é a frente e os itens são removidos da cabeça.
O Javadoc para fila parece concordar com a definição clássica (ou seja, a sua original):
fonte
O que as pessoas nos Estados Unidos costumam chamar de linha, assim como nas agências dos correios, as pessoas em outros países de língua inglesa chamam uma fila. Portanto, é mais fácil para os americanos manter a terminologia correta se você substituir "linha" por "fila". Em outras palavras, quando você está na cabeça ou na frente da linha, você é o próximo a ser chamado.
fonte
Ambas as convenções são de uso comum. Na minha experiência, ao falar sobre filas em geral, o elemento head é o próximo a sair da fila, e a cauda é onde os elementos entram na fila. Isso é consistente com o uso diário do inglês - entramos na fila atrás e o próximo a ser servido é na frente ou na cabeça. (E se você cortar, é o fim da linha para você!)
No entanto, quando uma fila (aka FIFO) é implementada como um buffer de anel , os termos são normalmente revertidos, porque a parte usada do buffer de anel se assemelha a uma cobra andando em círculos. Supondo que a cobra esteja avançando, a cabeça é naturalmente o fim que lidera o movimento, que também é o fim no qual os itens recebidos são inseridos.
fonte