2 回答
TA贡献1805条经验 获得超10个赞
你在多个地方:
back = (back - 1) % size;
这并不像您认为的那样在back
最初的时候起作用0
,它变成了-1 % size
,通常是-1
. 在它出现的地方,你应该使用:
back = (size + back - 1) % size;
TA贡献1818条经验 获得超7个赞
我注意到的第一件事是您为这个问题使用了太多变量。如果将其分解,则只需要 3 个变量。阵列、阵列的大小和阵列中用于注入和弹出的当前位置。这是一个 LiFo(后进先出)订单。
public void inject(int x){
if (this.deque.size() == this.size){ //check for full array
System.out.println("The Deque is Full");
} else {
this.deque[this.back+1] = x; //input new item next slot
this.back ++; //increment back to new input where eject would pull from
}
}
public class Deque {
int[] deque;
int back;
int size;
public Deque(int s){
this.size = s;
this.deque = new int[size];
this.back = 0;
}
这也应该解决你的数组索引问题我不知道你为什么使用模函数'%'作为back的当前位置。
添加回答
举报