如何使用mod来确定队列中圆形数组的开头和结尾?
答案 0 :(得分:9)
好吧,通常你会跟踪第一个元素的索引和当前大小。如果大小等于数组的大小,则表示数组已满。排队新项目然后需要您增长数组。否则,您只需写入元素(start + size + 1) % array_size
。
当你出队一个元素时,你只需要取start
元素,用null覆盖它以允许垃圾收集,递减size
和递增{{1如果需要,包装为0.
跟踪start
和start
的另一种方法是跟踪size
和start
- 其中next
是下一个元素的索引被列入队伍。在next
时,您发现阵列是否已满。然后排队(当未满时)只需要您更改start == next
,而出列只需要您更改next
。和以前一样,您需要在递增或递减start
/ start
时进行换行。
答案 1 :(得分:0)
在一个圆形数组中,队列的后面是(front + number_of_elements_in_queue - 1) mod size_of_queue
,每次出列后都应该跟踪队列的前面。