0
配列を使ってキューを実装する方法を練習していました。キュー内の要素をエンキューおよびデキューする方法を簡単に実装しました。キュー使用してスタックヌルポインタスタックを使用してキューを逆転させる際の例外
の逆を実施しながら、しかし、私は例外が発生したpublic class QueueImpl {
private int capacity;
int queueArr[];
int front = 0;
int rear = -1;
int currentSize = 0;
QueueImpl(int queueSize){
this.capacity=queueSize;
queueArr=new int[this.capacity];
}
public void enqueue(int data){
if(isQueueFull()){
System.out.println("Overflow");
return;
}
else{
rear=rear+1;
if(rear==capacity-1)
{
rear=0;
}
queueArr[rear]=data;
currentSize++;
System.out.println("Element " + data+ " is pushed to Queue !");
}
}
public int dequeue(){
if(isQueueEmpty()){
System.out.println("UnderFlow");
}
else{
front=front+1;
if(front == capacity-1){
System.out.println("Pop operation done ! removed: "+queueArr[front-1]);
front = 0;
} else {
System.out.println("Pop operation done ! removed: "+queueArr[front-1]);
}
currentSize--;
}
return queueArr[front-1];
}
private boolean isQueueEmpty() {
boolean status=false;
if(currentSize==0){
status=true;
}
return status;
}
private boolean isQueueFull() {
boolean status=false;
if(currentSize==capacity){
status=true;
}
return status;
}
public static void main(String arg[]) {
QueueImpl queueImpl=new QueueImpl(5);
queueImpl.enqueue(5);
queueImpl.enqueue(2);
queueImpl.enqueue(9);
queueImpl.enqueue(1);
// queueImpl.dequeue();
queueImpl.printQueue(queueImpl);
queueImpl.reverse(queueImpl);
}
private void printQueue(QueueImpl queueImpl) {
System.out.println(queueImpl.toString());
}
@Override
public String toString() {
return "Queue [front=" + front + ", rear=" + rear + ", size=" + currentSize
+ ", queue=" + Arrays.toString(queueArr) + "]";
}
private QueueImpl reverse(QueueImpl queueImpl) throws ArrayIndexOutOfBoundsException {
int i=0;
Stack<Integer> stack=new Stack<Integer>();
while(!queueImpl.isQueueEmpty()){
stack.push(queueImpl.dequeue());
}
while(!stack.isEmpty()){
stack.get(i);
i++;
}
while(!stack.isEmpty()){
queueImpl.enqueue(stack.pop());
}
return queueImpl;
}
}
エラーログがある -
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: -1
at com.tcs.QueueUsingAraay.QueueImpl.dequeue(QueueImpl.java:51)
at com.tcs.QueueUsingAraay.QueueImpl.reverse(QueueImpl.java:93)
at com.tcs.QueueUsingAraay.QueueImpl.main(QueueImpl.java:78)
thanx多く.itは働いた:) –