我在互联网上找到了这些算法,但我不明白为什么在入队方法中我们将大小与 N-1 进行比较???请帮助我谢谢!!
Algorithm size():
return (N-f+r)mod N
Algorithm enqueue(e):
if size()=N-1 then
throw a FullQueueException
Q[r]<---e
r<----(r+1)mod N
最佳答案
您提供了一个非常损坏(且不正确)的实现。
话虽这么说,数组中的循环队列通常从给定索引开始,到另一个给定索引结束(因此是 f 和 r)。但是,无论您做什么,队列中的项目数都不能多于基础数组中的项目数。这里的 size 函数应该计算队列中元素的数量。如果该数字危险地接近数组总大小,则队列已满。
关于java - 使用循环数组实现队列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2981045/