2

可能重复:
如何查找循环队列中的元素数量

我正在实现一个循环队列,但我无法正确获取队列的大小。我发现了一个关于相同问题的先前主题,提出的解决方案是使用两个指针并增加第二个指针,而它并不指向与第一个指针相同的对象。但我认为这种方法只有在队列中有不同对象时才能工作。就我而言,所有对象都是相似的。如何获得循环队列的大小?这个公式对我也不起作用:

int size = abs(m_front -m_tail) ; 

其中 m_front 和 m_tail 是尾部和前端队列索引。

谢谢

4

1 回答 1

3

这应该这样做:

if m_front > m_tail 
    size = (m_front - m_tail)
else
    size = (m_front + N - m_tail)

其中 N 是数组的长度。

或者,你可以自己跟踪它,当你增加一个计数器,当你Queue()减少它Dequeue()

于 2012-08-23T22:40:15.173 回答