队列Queue--数组实现

队列是一种特殊的线性表,特殊之处在于它只允许在表的前端(front)进行删除操作,而在表的后端(rear)进行插入操作,和栈一样,队列是一种操作受限制的线性表。进行插入操作的端称为队尾,进行删除操作的端称为队头。队列中没有元素时,称为空队列。 
队列的数据元素又称为队列元素。在队列中插入一个队列元素称为入队,从队列中删除一个队列元素成为出队。因为队列只允许在一段插入,在另一端删除,所以只有最早进入队列的元素才能最先从队列中删除,故队列又称为先进先出(FIFO—first in first out)线性表。

/**
 * 队列:先进先出
 * Created by fred on 2018/7/31.
 */
public class MyQueue {
    private int size;
    private int[] elements;
    private final int DEFAULT_CAPACITY = 2;

    public MyQueue(){
        elements = new int[DEFAULT_CAPACITY];
    }

    //获取queue的长度
    public int getSize(){
        return size;
    }

    //判断是否为空
    public boolean isEmpty(){
        return size == 0;
    }

    //将数据压入队列
    public void enqueue(int value){
        if(size >= elements.length) {
            int length = size * 2;
            int[] tmp = new int[length];
            System.arraycopy(elements, 0, tmp, 0, elements.length);
            elements = tmp;
        }
        elements[size++] = value;
    }

    //出队列
    public int dequeue(){
        if(isEmpty()){
            System.out.println("队列已空");
            return -1;
        }else {
            int value = elements[0];
            int[] tmp = new int[elements.length - 1];
            System.arraycopy(elements, 1, tmp, 0, elements.length - 1);
            elements = tmp;
            size--;
            return value;
        }
    }
    
}

猜你喜欢

转载自www.cnblogs.com/fredkeke/p/9394821.html