队列的实现(Java)

一、初始化

java 复制代码
public class MyQueue {
    public static class ListNode{
        ListNode next;
        ListNode prev;
        int val;
        public ListNode(int val) {
            this.val = val;
        }
    }
    private ListNode first;
    private ListNode last;
    private int size;
}

使用first和last方便后续内容实现

二、判空

java 复制代码
    public boolean isEmpty() {
        return first == null;
    }

只需要判断首个节点是否为空

三、入队列

java 复制代码
    public void offer(int val) {
        ListNode newNode = new ListNode(val);
        if (first == null) {
            first = newNode;
            last = newNode;
        }else{
            last.next = newNode;
            newNode.prev = last;
        }
        last = newNode;
        size++;
    }

first不动,移动last即可,除非只有一个节点,否则first永远为队头,last永远为队尾

四、peek

java 复制代码
    public int peek() {
        if (isEmpty()) {
            return -1;
        }
        return first.val;
    }

五、出队列

java 复制代码
    public int pop() {
        if (isEmpty()) {
            return -1;
        }
        int x = first.val;
        if(first.next == null){
            first = null;
            last = null;
        }else{
            first = first.next;
            first.prev.next = null;
            first.prev = null;
        }
        size--;
        return x;
    }

实际上first.prev.next = null 可以去掉因为first已经位于下一个节点,只需保证first.prev=null即可

六、size

java 复制代码
    public int size() {
        return size;
    }
相关推荐
H_oRIZoN_8 分钟前
Linux入门DAY27(文件IO(系统调用)详解|open/read/write/lseek)
java·linux·服务器
延凡科技11 分钟前
从 “人管机器“ 到 “数据管人“:智慧矿山综合管控落地实践
java·后端·struts
一木 之林34 分钟前
四、STL容器与数据结构
开发语言·数据结构·c++
QX_hao37 分钟前
【Go】--Cobra-cli的用法
开发语言·后端·golang
卓怡学长43 分钟前
w180springboot基于Java的悠扬乐器管理
java·spring boot·mysql·spring·maven·intellij-idea
艾醒(AiXing-w)43 分钟前
LangChain 1.0 入门(三):稳定性双核心——重试机制+速率限速器参数详解与实战
开发语言·langchain·php
古法安卓1 小时前
Android-高版本 LMKD 源码解析:基于 PSI 的内存压力监控与查杀全流程
android·java·android studio
古法安卓1 小时前
Android-PSI 详解:libpsi 源码解析——116 行代码架起 lmkd 与内核之间的桥
android·java·android studio
用户36533043470941 小时前
深入理解 Java Unsafe:从底层魔法到被淘汰的命运
java
总有刁民想爱朕ha1 小时前
Python PyQt5图片批量转MP4视频工具:本地离线免费无水印,完整代码
开发语言·python·qt