Где должна находиться задняя точка в queue:
queue
Согласно моим исследованиям, я получил оба ответа в качестве ответов.
Я бы сказал go с TailPointer, указывающим на последний добавленный элемент вместо пустого слота, в который вы добавили бы новый элемент. У меня есть несколько причин для этого:
TailPointer
Чтобы получить последний элемент, вы можете напрямую получить значение в TailPointer, которое больше похоже на имя. Вместо использования TailPointer - 1.
TailPointer - 1
Если у вас есть Array в качестве резервного хранилища данных для Queue, будет естественно проверить tailPointer == dataStore.Length - 1 ( поскольку индексирование на основе 0 является наиболее распространенным)
Array
Queue
tailPointer == dataStore.Length - 1
Кроме того, вы будете переносить свои данные в начальные индексы (те, которые находятся до главного указателя), если вы DeQueue свои данные. (см. this и this )
DeQueue
Если в очереди нет данных, вы можете просто установить TailPointer на -1.
-1