我正试图绕过圆形/环形缓冲区,我有点卡在一个问题上。
如果我有一个线性队列,如下所示:
66,20,30,40,19,空槽
0 1 2 3 4 5
前面:0(66),后面:5,长度:5
如果一个值被删除(考虑0是第一个被添加的,我相信0(这是66)将被删除。
我的问题:那么20会成为队列中的第一个吗?那之后布局会怎样?会有什么动作,例如索引/指针,或任何那种性质的东西?
感谢。
答案 0 :(得分:0)
是。您有类似下面的内容:
__ 20 30 40 19 __
0 1 2 3 4 5
正面:1,背面:5,长度:4
请注意,您甚至可以离开' 66'在0位置(不需要"擦除"它),这是大多数实现所做的。队列中的第一个项是" front" index,不一定是数组中支持队列的第一项。
答案 1 :(得分:0)
是的,然后20将成为队列中的下一个。您的其他问题取决于实施。如果以这种方式编码,事情就会发生变化;但这基本上违背了循环缓冲区的目的。在最常见的实现中,只有头指针和尾指针会移动。