队列数据结构中的 rear 指向哪里

Where should rear point in queue data structure

queue中的后点应该放在哪里:

  1. 将插入新元素的地方。
  2. 队列最后一个元素所在的位置。

根据我的研究,我得到了以上两种情况作为答案。

我会说 TailPointer 指向添加的最后一个元素,而不是指向要添加新元素的空槽。我有几个原因:

  • 要获取最后一个元素,您可以直接获取 TailPointer 处的值,这更像名称。而不是使用 TailPointer - 1.

  • 如果您有一个 Array 作为 Queue 的后备数据存储,检查 tailPointer == dataStore.Length - 1 是很自然的(因为基于 0 的索引是最常见)

  • 此外,如果您 DeQueue 您的数据,您会将数据包装到初始索引(在 Head Pointer 之前的索引)。 (参考this and this

  • 如果队列中没有数据,您可以简单地将TailPointer设置为-1