- 问题描述
用数组来实现栈和队列的数据结构 - 解决方案
队列用到了循环数组来实现,栈实现比较简单,直接上代码。
public class arrayQueue {
private int[] array;
int capacity;
int size;
int tail;
int front;
public arrayQueue(int size){
array = new int[size];
this.size = 0;
capacity = size;
this.front = 0;
this.tail = 0;
}
public void enqueue(int e){
if(size == capacity)
throw new ArrayIndexOutOfBoundsException("queue is full");
front = front % capacity;
array[front ++] = e;
size ++;
}
public int dequeue(){
if(size == 0)
throw new ArrayIndexOutOfBoundsException("queue is empty");
tail = tail % capacity;
size --;
return array[tail ++];
}
public boolean isEmpty(){
return size == 0;
}
}
public class arrayStack {
private int[] arr;
private int index;
public arrayStack(int size){
arr = new int[size];
index = 0;
}
public void push(int e){
if(index >= arr.length)
throw new ArrayIndexOutOfBoundsException("Stack is full");
arr[index ++] = e;
}
public int pop(){
if(index == 0 )
throw new ArrayIndexOutOfBoundsException("Stack is empty");
return arr[--index ];
}
public boolean isEmpty(){
return index == 0;
}
}