在循环队列的实现中,尾指针指向队列中最后一个元素后的位置 1:
|1|2|3|4|5| | |
^ ^
front tail
为什么?
我想我可以用指向最后一个元素的尾指针来实现循环队列,而不是最后一个元素。
你可以,确实以这种方式实现它。让尾指针指向经过最后一个元素的位置 1 有一定的对称性:
front
指向第一个(最旧的)使用的元素 - 下一个要读取的元素tail
指向第一个(最旧的)未使用元素 - 下一个要写入的元素无论哪种情况,您都需要做更多的工作来区分完整的循环队列和空的循环队列。维基百科关于循环缓冲区的文章中讨论了一些替代方案(包括按你的方式做事)。
看起来这是您使用的确定队列是空还是满的实现方式。
http://en.wikipedia.org/wiki/Circular_buffer#Full_.2F_Empty_Buffer_Distinction