我有这个代码来添加:
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,因为它是由公式增加的,但我无法弄清楚如何在不弄乱循环队列公式的情况下以不同的方式编写它。任何帮助将不胜感激。谢谢!