package basic_class_03;
/**
* 类名:Code_01Array_To_Stack_Queue<br>
* 功能:用数组结构实现大小固定的队列和栈<br>
* 作者:java战士<br>
* 日期:2019/8/22<br>
* 版本:v1.0.0
* 历史修订:
*/
public class Code_01Array_To_Stack_Queue {
//用数组实现一个栈
public static class ArrayStack{
private Integer[] arr;
private Integer index;
public ArrayStack(int initSize){
if (initSize<0){
throw new IllegalArgumentException("The initSize is less than 0");
}
arr=new Integer[initSize];
index=0;
}
public Integer peek(int obj){
if (index==0){
return null;
}
return arr[index-1];
}
public void push(int obj){
if (index==arr.length){
throw new ArrayIndexOutOfBoundsException("The stack is full!");
}
arr[index++]=obj;
}
public Integer pop(){
if (index==0){
throw new ArrayIndexOutOfBoundsException("The stack is empty");
}
return arr[--index];
}
}
//用数组实现一个队列
public static class ArrayQueue{
private Integer[] arr;
private Integer size;
private Integer first;
private Integer last;
public ArrayQueue(int initSize){
if (initSize<0){
throw new IllegalArgumentException("The initSize is less than 0");
}
arr=new Integer[initSize];
size=0;
first=0;
last=0;
}
public void push(int obj){
if (size==arr.length){
throw new ArrayIndexOutOfBoundsException("The queue is full");
}
size++;
arr[last]=obj;
last=last==arr.length-1?0:last+1;
}
public Integer pop(){
if (size==0){
throw new ArrayIndexOutOfBoundsException("The queue is empty");
}
size--;
int tmp=first;
first=first==arr.length-1?0:first+1;
return arr[tmp];
}
}
//for test
public static void main(String[] args){
int[] A=new int[]{1,2,3,4,5,6};
ArrayStack arrayStack=new ArrayStack(6);
for (int a:A){
arrayStack.push(a);
}
System.out.print("数组实现栈:");
while (arrayStack.index!=0){
System.out.print(arrayStack.pop()+" ");
}
System.out.println();
System.out.println("==============");
System.out.print("数组实现队列:");
ArrayQueue arrayQueue=new ArrayQueue(A.length);
for (int a:A) {
arrayQueue.push(a);
}
while (arrayQueue.size!=0){
System.out.print(arrayQueue.pop()+" ");
}
}
}
测试结果: