【发布时间】:2011-10-11 22:48:34
【问题描述】:
我有这个添加代码:
public void add(AnyType item){
if(isEmpty()){
q[f]=item;
}
else{
if(size==q.length){
AnyType[] copyQ = (AnyType[]) new Object[q.length*2];
System.arraycopy(q, f, copyQ, 0, q.length-f);
System.arraycopy(q, 0, copyQ, q.length-f, r);
f = 0;
q = copyQ;
}
}
q[r]=item;
r = (r+1)%(q.length);
size++;
}
但是当我想获得r 的值时,它给了我比实际值多一个的值。此外,当我将值从一个数组复制到另一个数组时,会有一个值跳过一个值。我知道一切都与r = (r+1)%(q.length); 的价值有关,而且我已经研究了好几个小时,但无法弄清楚。
将值分配给 q[r] 后,即使它只是第一个值,我尝试获取 r 应该在哪里的值它给我 1,因为它是由公式增加的,但我无法弄清楚如何在不弄乱循环队列公式的情况下以不同的方式编写它。
任何帮助将不胜感激。谢谢!
【问题讨论】:
-
你可能想解释一下 r 的含义
-
r 是后部,f 是前部。 q 是队列的名称。
标签: java arrays queue circular-buffer