Я всегда думал, что «заголовок» очереди - следующий элемент для чтения, и никогда не ставил под сомнение такое использование. Итак, библиотека связанного списка, которую я написал, которая используется для обслуживания очередей, кодифицировала эту терминологию: у нас есть list1_head
макрос, который извлекает первый элемент; при использовании этой библиотеки в очереди это будет первый элемент, который будет удален.
Но новый разработчик в команде привык к внедрению очередей наоборот. Он описал очередь как ведение себя как собаку: вы вставляете в голову, а удаляете в хвост. Это достаточно умное описание, и мне кажется, что его использование должно быть более распространенным, и у меня нет такого же вызывающего воспоминания описания моего предпочтительного использования.
Итак, я думаю, есть два связанных вопроса: 1, что означает для вас «голова» очереди? и 2, почему мы используем слово «голова» для описания этой концепции?
источник
Ответы:
Вы входите в конец очереди и выходите с фронта. В большинстве обществ это подразумевает, что голова - это передняя часть, а предметы снимаются с головы.
Javadoc для очереди , похоже, согласен с классическим определением (т.е. вашего оригинала):
источник
То, что люди в Соединенных Штатах обычно называют линией, как, например, в почтовом отделении, люди в других англоязычных странах называют очередью. Таким образом, американцам будет проще придерживаться терминологии, если вы замените «очередь» на «очередь». Другими словами, когда вы находитесь в голове или впереди линии, вы следующий, кто будет вызван.
источник
Оба соглашения находятся в общем пользовании. По моему опыту, когда речь идет об очередях в целом, следующим является элемент head, который выходит из очереди, а хвост - это то, где элементы входят в очередь. Это согласуется с повседневным употреблением английского - мы выстраиваемся в очередь сзади, а следующий, который нужно подавать, находится спереди или в голове. (И если вы порежете, это для задней части линии для вас!)
Однако, когда очередь (также известная как FIFO) реализована в виде кольцевого буфера , термины обычно меняются местами, потому что используемая часть кольцевого буфера напоминает змею, идущую по кругу. Предполагая, что змея движется вперед, голова, естественно, является концом, ведущим движение, а также концом, в который вставляются входящие предметы.
источник