美文网首页
八、队列(Queue)

八、队列(Queue)

作者: 咸鱼Jay | 来源:发表于2022-01-14 14:37 被阅读0次

    队列(Queue)

    \color{#00afef}{队列}是一种特殊的线性表,只能在\color{#ed7d30}{头尾两端}进行操作

    • 队尾(rear):只能从\color{#ed7d30}{队尾添加}元素,一般叫做\color{#ed7d30}{enQueue,入队}
    • 队头(front):只能从\color{#ed7d30}{队头移除}元素,一般叫做\color{#ed7d30}{deQueue,出队}
    • 先进先出的原则,First In First Out,FIFO
    队列(Queue)

    队列的接口设计

    int size(); // 元素的数量
    boolean isEmpty(); // 是否为空
    void clear(); // 清空
    void enQueue(E element); // 入队
    E deQueue(); // 出队
    E front(); // 获取队列的头元素
    

    思考:队列的内部实现是否可以直接利用之前讲解的数据结构?

    • 动态数组、链表
    • 优先使用\color{#00afef}{双向链表},因为队列主要是往\color{#ed7d30}{头尾}操作元素
    public class Queue<E> {
    
        private List<E> list = new LinkedList<>();
        
        public int size() {
            return list.size();
        }
        
        public boolean isEmpty() {
            return list.isEmpty();
        }
        
        public void enQueue(E element) {// 官方的是offer(E e)
            list.add(element);
        }
        
        public E deQueue() {// 官方的是poll()
            return list.remove(0);
        }
        
        public E front() {// 官方的是peek()
            return list.get(0);
        }
     
        public void clear() {
            list.clear();
        }
    }
    

    相关文章

      网友评论

          本文标题:八、队列(Queue)

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