循环队列的缺点?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了循环队列的缺点?相关的知识,希望对你有一定的参考价值。

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

答案

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

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

另一答案

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

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

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

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

另一答案

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

以上是关于循环队列的缺点?的主要内容,如果未能解决你的问题,请参考以下文章

数据结构学习笔记——顺序存储结构实现循环队列

数据结构-队列-循环队列

队列——循环队列与非循环队列(Java版)

go语言循环队列的实现

如何只用队头指针实现顺序循环队列?

用java实现循环队列?