小编vKm*_*KmC的帖子

使用循环数组实现队列:哪种方法可以调整圆形数组的大小?

我正在使用一个循环数组实现一个队列,我有点陷入resize()方法实现(当数组已满).

enqueue()方法内部,我检查数组的大小是否等于它的长度,并获得它是否已满.现在,我没有抛出异常,而是试图调整数组的大小.

问题是,我有两个案例需要考虑

  1. 前面<=后面
  2. 后<前

将旧数组的元素复制到新的较大数组中的最佳方法是什么?

我认为它使用for循环,如:

newArray = new Array[oldArray.length*2];

if (front <= rear) {
    for (int i = front; i < rear; i++) {
        newArray[i] = oldArray[i];
    } 
} else {
    for (int i = front; i < newArray.length; i++) {
        newArray[i] = oldArray[i];
    }

    for (int j = rear; j < front; j++) {
        // i'm using the variable i, the order is maintained
        newArray[i] …
Run Code Online (Sandbox Code Playgroud)

java arrays queue resize circular-buffer

3
推荐指数
1
解决办法
5664
查看次数

标签 统计

arrays ×1

circular-buffer ×1

java ×1

queue ×1

resize ×1