循环队列的缺点?

时间:2013-02-16 06:10:36

标签: data-structures language-agnostic queue circular-buffer

最近,在一次采访中我被问到使用循环队列的缺点。我什么都想不到。在互联网上搜索我发现的唯一答案是它比线性队列更难实现:)。还有其他缺点吗?

3 个答案:

答案 0 :(得分:1)

我想说循环队列的最大缺点是你只能存储queue.length元素。如果您将其用作缓冲区,则会限制历史深度。

另一个较小的缺点是,如果没有保留其他信息,很难从完整队列中判断出空队列。

答案 1 :(得分:1)

面试官正在寻找的答案可能取决于上述问题中没有的其他背景。

例如,通常将循环队列视为高度并发的生产者/消费者系统。当队列已满时,队列前端和后端的操作可以争用相同的缓存行,这可能是这样的上下文中的问题。

也许面试官希望你谈谈与垃圾收集的语言相比,与基于圆形阵列的队列相比,制作无锁链接队列的难易程度。

或者,如果您使用具有周期性移位而不是循环队列的线性队列,那么它可能是如何更好地利用您的语言提供的向量容器。

答案 2 :(得分:0)

在我看来,任何遍历队列的代码都必须跟踪第一个节点,以便检测遍历的结束。但是在多线程环境中,另一个线程可能会删除第一个节点,这会导致遍历线程进入无限循环。因此,遍历线程必须使第一个节点在其循环的整个队列中保持锁定状态。