队列中的循环数组

时间:2010-10-23 06:22:19

标签: java data-structures queue

如何使用mod来确定队列中圆形数组的开头和结尾?

2 个答案:

答案 0 :(得分:9)

好吧,通常你会跟踪第一个元素的索引和当前大小。如果大小等于数组的大小,则表示数组已满。排队新项目然后需要您增长数组。否则,您只需写入元素(start + size + 1) % array_size

当你出队一个元素时,你只需要取start元素,用null覆盖它以允许垃圾收集,递减size和递增{{1如果需要,包装为0.

跟踪startstart的另一种方法是跟踪sizestart - 其中next是下一个元素的索引被列入队伍。在next时,您发现阵列是否已满。然后排队(当未满时)只需要您更改start == next,而出列只需要您更改next。和以前一样,您需要在递增或递减start / start时进行换行。

答案 1 :(得分:0)

在一个圆形数组中,队列的后面是(front + number_of_elements_in_queue - 1) mod size_of_queue,每次出列后都应该跟踪队列的前面。