自己动手写数据结构之普通队列

2020-12-16  本文已影响0人  逍遥白亦

普通队列的实现

1 定义

队列是一种特殊的线性表,特殊之处在于它只允许在表的前端(front)进行删除操作,而在表的后端(rear)进行插入操作,和栈一样,队列是一种操作受限制的线性表。进行插入操作的端称为队尾,进行删除操作的端称为队头。

类似于我们在星巴克排队买咖啡,先来先买。

2 基本操作和元素

入队

出队

队头

队尾

实现一个队列

public class NormalQueue<E> {

    private E[] queueArray;

    private int head;

    private int tail;

    private int maxSize;

    private int length;

    @SuppressWarnings("unchecked")
    public NormalQueue(int maxSize) {
        this.queueArray = (E []) new Object[maxSize];
        this.head = 0;
        this.tail = -1;
        this.maxSize = maxSize;
        this.length = 0;
    }

    boolean enQueue(E data) throws Exception {
        if (isFull()){
            throw new Exception("The Queue is Full");
        }

        queueArray[++tail] = data;

        length++;

        return true;

    }

    public E deQueue() throws Exception{
        if (isEmpty()){
            throw new Exception("The Queue is Empty");
        }

        E data = queueArray[head];

        length--;

        head++;

        return data;

    }

    public E peekHead(){
        return queueArray[head];
    }

    public E peekTail(){

        if (isEmpty()){
            return queueArray[head];
        }

        return queueArray[tail];
    }

    private boolean isEmpty(){
        return length == 0;
    }

    private boolean isFull(){
        return length == maxSize + 1;
    }


}
上一篇下一篇

猜你喜欢

热点阅读