/**
* @Description 基于数组实现简单的队列(先进先出)
* @auther Eleven
* @create 2020-04-02 23:40
**/
public class MyQueue {
int[] elements;
public MyQueue() {
//初始化的时候定义数组长度为0,防止下面调用的时候报空指针异常
this.elements = new int[0];
}
//入队
public void add(int element){
//创建一个新数组用于接受需要入队的数据和原先的数组 新数组的长度为原先数组长度加+1
int[] newArr=new int[elements.length+1];
//将原先数组遍历,并且赋值给到新的数组
for (int i=0;i<elements.length;i++){
newArr[i]=elements[i];
}
//将需要压入的数据赋值给到新数组的最后一个索引位置
newArr[elements.length] =element;
//将原先数组的指针指向新的数组
elements = newArr;
}
//出队(因为是先进先出,所以出队出的是第一个数据)
public int poll(){
//定义一个变量存储第一个数据
int element = elements[0];
//首先需要判断队列里面是不是有数据
if(elements.length==0){
throw new RuntimeException("The Queue is Empty!");
}
//创建一个数组用于存储出队后的数据
int[] newArr=new int[elements.length-1];
//将原先数组遍历,并且赋值给到新的数组
for (int i=0;i<elements.length-1;i++){
newArr[i]=elements[i+1];
}
//将原来数组的指针指向新的数组
elements = newArr;
return element;
}
}
测试类
class Test{
public static void main(String[] args) {
MyQueue myQueue = new MyQueue();
myQueue.add(18);
myQueue.add(90);
myQueue.add(10);
System.out.println(Arrays.toString(myQueue.elements) );
System.out.println(myQueue.poll());
myQueue.add(100);
System.out.println(myQueue.poll());
System.out.println(Arrays.toString(myQueue.elements) );
}
}