我正在实现循环队列,但我无法正确获取队列的大小。 我找到了一个关于同一问题的前一个主题,并且提出的解决方案是使用两个指针并增加第二个指针,而它不指向与第一个相同的对象。但我认为这个appoach只能在队列中有不同的对象时才能工作。就我而言,所有对象都是相似的。如何获得循环队列的大小? 这个公式对我也不起作用:
int size = abs(m_front -m_tail) ;
其中m_front和m_tail是尾部和前端队列索引。
由于
答案 0 :(得分:3)
这应该这样做:
if m_front > m_tail
size = (m_front - m_tail)
else
size = (m_front + N - m_tail)
其中N是数组的长度。
或者,您可以通过在Queue()
时递增计数器并在Dequeue()
时递减计数器来自行跟踪。