在循环队列的实现中,尾指针指向队列中最后一个元素之后的位置1:
|1|2|3|4|5| | |
^ ^
front tail
为什么?
我想我可以实现Cyclic Queue,尾指针指向最后一个元素,而不是最后一个元素。
答案 0 :(得分:1)
你确实可以这样实现它。尾部指针指向最后一个元素后面的位置1有一定的对称性:
front
指向第一个(最旧的)使用元素 - 下一个要读取的元素tail
指向第一个(最旧的)未使用元素 - 下一个要写入的元素在任何一种情况下,您都需要做更多的工作来区分完整的循环队列和空循环队列。 Wikipedia article on circular buffers中讨论了一些替代方案(包括以自己的方式做事)。
答案 1 :(得分:0)
看起来这就是你使用的确定队列是空还是满的方式。
http://en.wikipedia.org/wiki/Circular_buffer#Full_.2F_Empty_Buffer_Distinction