美文网首页
自己动手写数据结构之普通队列

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

作者: 逍遥白亦 | 来源:发表于2020-12-16 23:37 被阅读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;
        }
    
    
    }
    

    相关文章

      网友评论

          本文标题:自己动手写数据结构之普通队列

          本文链接:https://www.haomeiwen.com/subject/xoeyiktx.html