基于数组实现简单的队列

/**
 * @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) );
    }
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章