Я получаю сообщение об ошибке:
java.lang.ArrayIndexOutOfBoundsException: -1
, и это относится к методу ввода:
deque[back] = x;
У меня также есть методы для push и pop, которые добавляют и удаляют элементы спередино они работают нормально.
Идея состоит в том, чтобы использовать реализацию на основе массива в качестве deque, где вставлять и извлекать вставлять элемент сзади и удалять элемент сзади.
public void inject(int x){
if (elementCount == size){
System.out.println("The Deque is Full");
} else {
deque[back] = x;
back = (back - 1) % size;
elementCount ++;
}
}
public class Deque {
int[] deque;
int front;
int back;
int size;
int elementCount;
public Deque(int s){
size = s;
deque = new int[size];
front = 1;
back = 0;
elementCount = 0; //n of elements
}
public int getRear(){
return deque[back];
}
public int getFront(){
return deque[front];
}
public void inject(int x){
if (elementCount == size){
System.out.println("The Deque is Full");
} else {
deque[back] = x;
back = (back - 1) % size;
elementCount ++;
}
}
public void eject(){
if (elementCount == 0){
System.out.println("The deque is empty");
}else{
back = (back + 1) % size;
elementCount--;
}
}
}