数据结构:队列

什么是队列:

队列与栈一样,也是一种线性表,不同的是,队列可以在一端添加元素,在另一端取出元素,也就是:先进先出。从一端放入元素的操作称为入队,取出元素为出队,

特点:

1 . 队列跟栈一样,也是一种抽象的数据结构。

  1. 具有先进先出的特性,支持在队尾插入元素,在队头删除元素。

实现:

队列可以用数组来实现,也可以用链表来实现。

用数组实现的队列叫作顺序队列,用链表实现的队列叫作链式队列。

复制代码
public class Queue<T> {
    //记录头结点
    private Node head;
    //记录尾节点
    private Node last;
    //记录元素个数
    private int N;

    public Queue() {  //初始化
        this.head = new Node(null,null);
        this.last = null;
        N=0;
    }

    //尾插法
    public void inQueue(T t){ //往队列插入元素
        if (last==null){ //插入第一个元素时
            last=new Node(t,null);
            head.next=last; //此时头尾节点指向同一个元素
            N++;
        }else {//不为空时
            Node temp=last;
            last=new Node(t,null);
            temp.next=last;

        }
        N++;
    }


    //拿元素  相当于头删元素
    public T outQueue(){
        if (head.next==null){
            return null;
        }else {
            Node first=head.next; //第一个元素
            head.next=first.next;
            N--;
            if (N==0){  //如果最后元素拿完 需要重置last 否则此时last依旧指向最后一个元素
                last=null;
            }
            return first.item;
        }
    }


    private class Node{
        private T item;
        private Node next;

        public Node(T t, Node next) {
            this.item = t;
            this.next = next;
        }
    }
}
相关推荐
古法安卓2 小时前
Android-日志系统源码解析
android·java·android studio
小夏coding3 小时前
从"一把梭"到"精妙拆解" —— 滑动窗口计时框架的设计演进
java·后端
MacroZheng4 小时前
同事问我:"Claude Code经常失忆,不怕它把项目搞炸?",我:"怕,三个Markdown文件给它装个永不丢失的外置大脑!"
java·人工智能·后端
十年Java程序媛6 小时前
深度实战:JDK21 虚拟线程 + HikariCP 生产正确配比、坑点、监控全套
java·spring boot
xiaoqiMikko6 小时前
有人在搜一个不存在的 Tomcat 版本
java·tomcat
用户3126874877209 小时前
ConcurrentHashMap 怎么保证线程安全?从分段锁到 CAS+synchronized
java
vipxieliang9 小时前
ValidX vs Apache Commons Validator:功能与性能对比
java·spring boot
SimonKing9 小时前
升级Spring Boot 4后,从 Jackson 2 到 3,到底有哪些变化
java·后端·程序员
吃饱了得干活10 小时前
一篇讲清楚Spring Boot:自动装配、启动器、过滤器、拦截器、设计模式
java·spring boot·后端
lhldsg11 小时前
AI零售系统实战指南:从架构设计到落地部署全解析
java·人工智能·小程序·uni-app·零售