[数据结构]:循环队列的尾指针

发布于 2024-12-03 11:56:54 字数 166 浏览 2 评论 0原文

在循环队列的实现中,尾指针指向队列中最后一个元素之后的位置1:

|1|2|3|4|5| | |
 ^         ^
front      tail

为什么?

我想我可以实现循环队列,尾部指针指向最后一个元素,而不是最后一个元素。

In the implementation of Cyclic Queue, the tail pointer points to the position 1 past the last element in the queue:

|1|2|3|4|5| | |
 ^         ^
front      tail

why?

I think I can implement the Cyclic Queue with the tail pointer pointing to the very last element, not 1 past the last.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

所谓喜欢 2024-12-10 11:56:54

您确实可以这样实现。让尾部指针指向最后一个元素之后的位置 1 有一定的对称性:

  • front 指向第一个(最旧的)使用的元素 - 下一个要读取的元素
  • tail > 指向第一个(最旧的)未使用的元素 - 要写入的下一个元素

在任何一种情况下,您都需要做更多的事情来区分完整的循环队列和空的循环队列。 有关循环缓冲区的维基百科文章中讨论了一些替代方案(包括按照您的方式进行操作)。

You can, indeed implement it that way. There's a certain symmetry to having the tail pointer point to the position 1 past the last element:

  • front points to the first (oldest) used element - the next element to be read
  • tail points to the first (oldest) unused element - the next element to be written

In either case, you need to do a bit more to distinguish between a full cyclic queue and an empty one. Some of the alternatives (including doing things your way) are discussed in the Wikipedia article on circular buffers.

筑梦 2024-12-10 11:56:54

看起来这就是您使用的确定队列是空还是满的实现方式。

http://en.wikipedia.org/wiki/Circular_buffer#Full_.2F_Empty_Buffer_Distinction

It looks like that is the implementation your using's way of determining if the queue is empty or full.

http://en.wikipedia.org/wiki/Circular_buffer#Full_.2F_Empty_Buffer_Distinction

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文