【发布时间】:2010-10-23 06:22:19
【问题描述】:
如何使用 mod 来确定队列中循环数组的开始和结束?
【问题讨论】:
标签: java data-structures queue
如何使用 mod 来确定队列中循环数组的开始和结束?
【问题讨论】:
标签: java data-structures queue
嗯,通常你会跟踪第一个元素的索引和当前大小。如果大小等于数组的大小,则表示数组已满。然后,将新项目加入队列需要您增加数组。否则,您只需写信给元素(start + size + 1) % array_size。
当你dequeue一个元素时,你只需在start取元素,用null覆盖它以允许垃圾收集,减少size,增加start,包装为0如有必要。
跟踪start 和size 的另一种方法是跟踪start 和next - 其中next 是要排队的下一个元素的索引。当start == next 时,您会发现阵列是否已满。然后入队(未满时)只需要你改变next,而出队只需要你改变start。和以前一样,在递增或递减start/next时需要换行。
【讨论】:
在一个循环数组中,队列的后面是(front + number_of_elements_in_queue - 1) mod size_of_queue,并且应该在每次出队后跟踪队列的前面。
【讨论】: