【发布时间】:2011-07-11 15:11:03
【问题描述】:
我正在考虑使用数组实现有界队列(容量固定)。然后我在有界队列上偶然发现了这个wiki-article。它提到:
数组效率低下是因为 将项目复制到前面所花费的时间 队列的
我不太明白这是怎么回事?当我们入队或出队时,我们只是将索引更新为头部或尾部。我们在哪里将项目复制到队列的前面?
【问题讨论】:
标签: arrays algorithm data-structures queue
我正在考虑使用数组实现有界队列(容量固定)。然后我在有界队列上偶然发现了这个wiki-article。它提到:
数组效率低下是因为 将项目复制到前面所花费的时间 队列的
我不太明白这是怎么回事?当我们入队或出队时,我们只是将索引更新为头部或尾部。我们在哪里将项目复制到队列的前面?
【问题讨论】:
标签: arrays algorithm data-structures queue
没有复制 - 陈述不正确。如果你回顾这篇文章的历史,某人的代码实际上确实移动了所有项目,但是那个代码被你现在看到的版本替换了,并且错误的语句被留在了那里。那里的 C++ 代码中也至少有一个错误。在 enqueue() 中,条件 if(tail<head+QMAX) 永远不会失败,因为给定代码 tail 永远不会大于或等于 QMAX。
【讨论】:
push 和shift,真正移动所有元素的操作。由于文章没有提到环形缓冲区,我认为它的质量很差。