【问题标题】:Circular Arrays in Queues队列中的循环数组
【发布时间】:2010-10-23 06:22:19
【问题描述】:

如何使用 mod 来确定队列中循环数组的开始和结束?

【问题讨论】:

    标签: java data-structures queue


    【解决方案1】:

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

    当你dequeue一个元素时,你只需在start取元素,用null覆盖它以允许垃圾收集,减少size,增加start,包装为0如有必要。

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        猜你喜欢
        • 2023-03-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-03-10
        • 2012-01-30
        相关资源
        最近更新 更多