【发布时间】:2013-02-01 04:28:28
【问题描述】:
最近,在一次采访中,有人问我使用循环队列的缺点。我什么都想不出来。在互联网上搜索我发现的唯一答案是它比线性队列难以实现:)。还有其他缺点吗?
【问题讨论】:
-
根据实现的不同,您可能必须在循环队列中将节点留空,而线性队列可能会被完全填充。没有太大的劣势,除非每个节点都很大!
-
为什么节点必须留空?
-
这取决于你如何实现循环队列。如果您在每个节点中存储数据,那么就没有简单的方法来区分空列表和完整列表。
-
@asheeshr - 如果 2 个变量是“head”和“size”而不是 head 和 tail,您可以区分 full 和 empty。您也可以使用“head”和“tail”来执行此操作,但是当队列为空(或已满)时,对“tail”索引使用特殊值(例如 -1)。保留插槽也是一个可行的选择,只要“浪费”一个条目是可以的。这是 CPU 与内存的权衡。
标签: data-structures language-agnostic queue circular-buffer