循环缓冲区(开始值被删除,会发生什么?)

时间:2012-05-10 22:46:55

标签: arrays queue circular-buffer

我正试图绕过圆形/环形缓冲区,我有点卡在一个问题上。

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

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

前面:0(66),后面:5,长度:5

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

我的问题:那么20会成为队列中的第一个吗?那之后布局会怎样?会有什么动作,例如索引/指针,或任何那种性质的东西?

感谢。

2 个答案:

答案 0 :(得分:0)

是。您有类似下面的内容:

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

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

请注意,您甚至可以离开' 66'在0位置(不需要"擦除"它),这是大多数实现所做的。队列中的第一个项是" front" index,不一定是数组中支持队列的第一项。

答案 1 :(得分:0)

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