最近,在一次采访中我被问到使用循环队列的缺点。我什么都想不到。在互联网上搜索我发现的唯一答案是它比线性队列更难实现:)。还有其他缺点吗?
答案 0 :(得分:1)
我想说循环队列的最大缺点是你只能存储queue.length元素。如果您将其用作缓冲区,则会限制历史深度。
另一个较小的缺点是,如果没有保留其他信息,很难从完整队列中判断出空队列。
答案 1 :(得分:1)
面试官正在寻找的答案可能取决于上述问题中没有的其他背景。
例如,通常将循环队列视为高度并发的生产者/消费者系统。当队列已满时,队列前端和后端的操作可以争用相同的缓存行,这可能是这样的上下文中的问题。
也许面试官希望你谈谈与垃圾收集的语言相比,与基于圆形阵列的队列相比,制作无锁链接队列的难易程度。
或者,如果您使用具有周期性移位而不是循环队列的线性队列,那么它可能是如何更好地利用您的语言提供的向量容器。
答案 2 :(得分:0)
在我看来,任何遍历队列的代码都必须跟踪第一个节点,以便检测遍历的结束。但是在多线程环境中,另一个线程可能会删除第一个节点,这会导致遍历线程进入无限循环。因此,遍历线程必须使第一个节点在其循环的整个队列中保持锁定状态。