Possible Duplicate:
how to find number of elements in a Circular Queue
我正在实现一个循环队列,但无法正确获取队列的大小。 我发现之前的主题涉及相同的问题,提出的解决方案是使用两个指针并递增第二个指针,同时它不指向与第一个指针相同的对象。但我认为这个方法只有当队列中有不同的对象时才能工作。就我而言,所有对象都是相似的。如何获取循环队列的大小? 这个公式对我也不起作用:
int size = abs(m_front -m_tail) ;
其中 m_front 和 m_tail 是尾部和前端队列索引。
谢谢
最佳答案
这应该可以做到:
if m_front > m_tail
size = (m_front - m_tail)
else
size = (m_front + N - m_tail)
其中 N 是数组的长度。
或者,您可以通过在 Queue()
时递增计数器并在 Dequeue()
时递减计数器来自己跟踪它。
关于pointers - 循环队列大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12100944/