0

我试图让我的头脑围绕循环/环形缓冲区,我有点卡在一个问题上。

如果我有一个线性队列,如下所示:

66、20、30、40、19,空槽
0 1 2 3 4 5

正面:0(66),背面:5,长度:5

如果一个值被删除(考虑到 0 是第一个被添加的,我相信 0(即 66)将被删除。

我的问题:那么 20 会成为队列中的第一个吗?之后的布局会如何?有什么东西会移动吗,例如索引/指针,或者任何类似的东西?

谢谢。

4

2 回答 2

0

是的。你会有类似下面的东西:

__   20   30   40   19   __
0    1    2    3    4    5

正面:1,背面:5,长度:4

请注意,您甚至可以将 '66' 留在位置 0(无需“擦除”它),这是大多数实现所做的。队列中的第一项是“前”索引所指向的项,不一定是支持队列的数组中的第一项。

于 2012-05-10T22:50:30.053 回答
0

是的,然后 20 将在队列中。您的其他问题取决于实施。如果以这种方式编码,事情可能会发生变化;然而,这基本上违背了循环缓冲区的目的。在最正常的实现中,只有头部和尾部指针会移动。

于 2012-05-10T22:50:31.097 回答