pointers - 循环队列大小

标签 pointers size circular-buffer

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/

相关文章:

android - 如何创建一个封闭的(圆形)ListView?

c - 删除链表的第一个节点

c++ - p = array 是否与 p = &array[0] 相同?

c - Linux C++ : test of the cacheline size performance effect not as expected

html - Bootstrap : Fill whole container under navbar minus navbar height

c++ - 高效的循环列表

c - C : If I initialize a pointer ptr1 = NULL, 中的 NULL 指针和另一个指针 ptr2 = ptr1,ptr2 的值为 NULL 吗?

c++ - 空指针如何改变它的值?

C Windows 缓冲区大小

c# circular flatten arrays 收藏