这是ResizingArrayQueue ADT第4版算法中调整大小方法的教科书实现:
private void resize(int capacity) {
assert capacity >= n;
Item[] temp = (Item[]) new Object[capacity];
for (int i = 0; i < n; i++) {
temp[i] = q[(first + i) % q.length];
}
q = temp;
first = 0;
last = n;
}
我的问题是,在将(first + i) % q.length
复制到q
时,为什么还要使用temp
作为索引?它不应该总是等于first + i
吗?什么是mod?
完整代码https://algs4.cs.princeton.edu/13stacks/ResizingArrayQueue.java.html