如何查找循环队列中的元素数量

joh*_*ohn 5 queue circular-list

如何找到循环队列中的项目数?

|前 - 后| 并不总是有效.

是否有一个方程式可以知道循环队列中有多少元素?

小智 9

实际上大小会是,

size = front > rear ? (MAX - front + rear + 1) : (rear - front + 1);
Run Code Online (Sandbox Code Playgroud)

或者可以选择通用公式:

size = abs(abs(MAX - front) - abs(MAX -rear));//this works in every situation
Run Code Online (Sandbox Code Playgroud)

  • 通用公式不正确。不适用于 head>tail 或 tail>=head 时。除此之外,根据循环队列的定义(MAX >= front, back),不需要为 MAX-front 和 MAX-rear 设置绝对值。 (4认同)

Sam*_*der 0

您的队列可以在多个位置包含相同的元素吗?如果可以的话我认为你不能这样做,因为没有办法知道以下之间的区别:

a->b->c

a->b->c->a->b->c

如果它不能多次包含相同的元素,则只需浏览队列,直到找到您已经见过的元素