循环队列大小

时间:2012-08-23 22:33:56

标签: pointers size circular-buffer

  

可能重复:
  how to find number of elements in a Circular Queue

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

int size = abs(m_front -m_tail) ; 

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

由于

1 个答案:

答案 0 :(得分:3)

这应该这样做:

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

其中N是数组的长度。

或者,您可以通过在Queue()时递增计数器并在Dequeue()时递减计数器来自行跟踪。