【发布时间】:2012-08-23 22:33:56
【问题描述】:
我正在实现一个循环队列,但我无法正确获取队列的大小。 我发现了一个关于相同问题的先前主题,提出的解决方案是使用两个指针并增加第二个指针,而它并不指向与第一个指针相同的对象。但我认为这种方法只有在队列中有不同对象时才能工作。就我而言,所有对象都是相似的。如何获得循环队列的大小? 这个公式对我也不起作用:
int size = abs(m_front -m_tail) ;
其中 m_front 和 m_tail 是尾部和前端队列索引。
谢谢
【问题讨论】:
-
问:您的队列是作为数组实现的吗?如果它只是一个链表,那么你能做的最好的就是确定什么时候 front == tail;您无法确定“大小”,除非您自己记数。
-
@paulsm4 :是的,它被实现为一个数组。当front==tail时,仅表示数组为空。
-
@KingsIndian : 是的,这是同一个问题,这就是我在我的消息中谈论的主题
-
@user16841 对。你必须解释为什么这些答案对你不起作用。为什么存储的对象类型与您有关?指针指向队列本身,而不是存储的对象。
标签: pointers size circular-buffer