2010-08-21 48 views

回答

0

如果你在一个链表中做它,那么它实际上可以是循环的,因为最后一个节点将指向第一个节点。但我认为你需要澄清你的意思是“最好的”。

+0

你好吗。但我们也可以对正常的队列程序做一些修改,以便当数组中的最后一个索引到达时,我们可以使数组索引指针指向第一个索引的数组。所以它可以完美地作为一个循环队列。 对于BEST的说明: 在数据访问速度和内存管理方面最好。 – NEO 2010-08-21 11:57:11

+0

你还没有真正弄清楚你的意思是最好的:显然速度很重要,内存管理并不是一个指标。 Fyi,这也经常被称为环形缓冲区。 – 2010-08-21 20:57:52

1

我想说,链接列表版本将是两个解决方案中更好的一个事实,即您不必一直调整您自己的内存以允许更多元素进入您的阵列。以及Skilldrick在链接列表中所说的内容,它实际上指向它所属的位置(最后一个节点指向第一个,从而使其循环)。

0

这取决于您需要在循环列表中执行哪些操作。例如,如果您需要随机访问(“给我列表的第237项”),那么数组实现将会快得多。

另一方面,有了一个工具,你可能需要有时调整列表,这将是缓慢的。您可以将其分摊以获得每插入O(1)摊销时间,但在实时系统上,偶尔缓慢的操作可能是不可接受的。

0

循环队列是实现数组的有界队列。

它比普通的队列更好,因为在这里我们可以有效地利用内存空间。如果我们有一个普通队列并从那里删除了一些元素,那么会在那里创建空的空间,即使队列中有空单元,我们也不能插入任何新的元素,因为只能从一侧(即后面或尾部)进行插入,并且必须从另一侧(即前面或头部)完成删除。但是在循环排队的情况下,前面和后面彼此相邻。