【发布时间】:2011-02-24 22:01:52
【问题描述】:
当 front==rear 在循环队列中时会发生什么
队列是否有一个元素或已满或为空
【问题讨论】:
标签: data-structures queue
当 front==rear 在循环队列中时会发生什么
队列是否有一个元素或已满或为空
【问题讨论】:
标签: data-structures queue
这是模棱两可的。您需要另一种机制来跟踪队列是否已满。请参阅Wikipedia page 上的困难部分进行讨论。
引用该页面,这里有一些关于如何解决它的想法:
为了解决这个问题,有一个 解决方案的数量:
- 始终保持一个插槽打开。
- 使用填充计数来区分这两种情况。
- 使用读取和写入计数来获取填充计数。
- 使用绝对索引
.
【讨论】:
取决于前后端指向的位置:数组元素或堆上某处的对象。 (你没有提到你的编程语言。)
如果在您的编程语言中nil 不等于nil,则您的循环对象队列将只有一个元素。但是如果nil == nil 的计算结果为true...你就看不出来:-)
对于通过数组实现的队列,您也无法分辨。您的队列也可能已满...
【讨论】: