数据结构——队列(Queue)详解

【数据结构】队列(顺序队列、循环队列、链队列) 文章目录 前言 一、队列的定义 二、队列的顺序存储结构 1.顺序队列的定义 2.循环队列定义 3.循环队列的基本操作 三、队列的链式存储结构 1.链队列的定义 2.链队列的基本操作 前言 队列也是一种线性表,其特殊性在于队列的基本操作是线性表的子集。队列按“先进先出”的规则进行操作,故称其为操作受限的线性表。 一、队列的定义 队列(queue)是只允许在一端进行插入操作,在另一端进行删除操作的线性表,简称“队”。 队列是一种先进先出(First In First Out)的 阅读详情

1.队列(Queue)
1.1概念
队列:只允许在一端进行插入数据操作,在另一端进行删除数据操作的特殊线性表,队列具有先进先出FIFO(First In First Out)的性质

入队列:进行插入操作的一端称为队尾(Tail/Rear)

出队列:进行删除操作的一端称为队头(Head/Front)

2 队列的使用
在Java中,Queue是个接口,底层是通过链表实现的,在实例化Queue时,必须实例化LinkedList对象,因为LinkedList实现了Queue接口

方法功能
boolean offer(E e)入队列
E poll()出队列
peek()获取队头元素
int size()获取队列中有效元素个数
boolean isEmpty()检测队列是否为空

1.3 队列模拟实现(双列表实现)

public class MyQueue {
    static class ListNode {
        public int val;
        public ListNode prev;
        public ListNode next;
 
        public ListNode(int val) {
            this.val = val;
        }
    }
 
    public ListNode first;
    public ListNode last;
 
    //尾插
    public void offer(int val) {
        ListNode node = new ListNode(val);
        if(first == null) {
            first = last = node;
        }else {
            node.prev = last;
            last.next = node;
            last = last.next;
        }
    }
 
    //头删
    public int poll() {
        //队列为空
        if(first == null) {
            return -1;
        }
        int ret = first.val;
        //队列只有一个节点
        if(first.next == null) {
            first = last = null;
        }else {
            //队列有多个节点
            first = first.next;
            first.prev = null;
        }
        return ret;
    }
 
    //查看队头元素
    public int peek() {
        if(first == null) {
            return -1;
        }
        return first.val;
    }
 
    //判断队列是否为空
    public boolean isEmpty() {
        return first == null;
    }
}

Java 数据结构之队列(Queue)详解 但需要注意的是,由于数组的容量是固定的,当队列已满时,无法再添加新的元素,除非进行元素的出队操作。通过enqueue()方法将元素入队,dequeue()方法将元素出队,peek()方法返回队列头部元素,size()方法返回队列当前元素个数,isEmpty()方法和isFull()方法检查队列是否为空或已满。Deque接口还提供了一些其他方法,如size()用于返回双端队列中的元素个数,isEmpty()用于判断双端队列是否为空,clear()用于清空双端队列中的所有元素等。 阅读详情

相关推荐

Java数据结构与算法之Queue队列

目录: 1.队列概述 2.队列分类 3.数组实现自定义队列 4.链表实现自定义队列 1.队列概述 队列是一种特殊的线性表,它可以通过数组与链表两种方式实现,它与单链表和数组的区别是它只能从队尾添加元素, 队首删除元素,同时满足先进先出(IFIO)的原则。 2.队列分类 3.数组实现自定义队列 (1)自定义队列接口CustomQueue.java package

Andy_lau 1930

队列(Queue)

一、队列的概念 队列是一个先进先出的数据结构。 联想一下链表,在单链表中,只能对表尾进行插入,对表头进行结点的删除,这样强限制性的链表,就是所说的队列。也就是说,队列是限定在表的一端进行插入,表的另一端进行删除的数据结构。 如图去买票排队,每一列队伍都有一个队尾和队首,先来的先买票,后来的后买,买好的就从队首出去,新来买票的就需要从队尾继续排队。 通常,称进数据的一端为队尾,出数据的一端为队首,数据元素进队列的过程称为入队,出队列的过程称为出队。 队列是一个线性的数据结构,并且这个数据结构只允许在一端进行插

ChineseSoftware的博客 3万+

【71页PPT】工业40及智能制造解决方案(附下载方式)

2013年,工业4.0平台发布白皮书,正式确立其发展战略。工业4.0不仅是技术的升级,更是制造业思维的重构。工业4.0的核心是通过信息物理系统(CPS)实现工厂内外的互联,构建高度灵活的个性化生产模式。它不仅是技术革新,更是一种生产方式的变革,使传统行业界限模糊化,催生新的商业模式和合作形式。德国作为制造业强国,其GDP的25%和出口总额的60%依赖制造业,因此工业4.0成为其维持全球领先地位的重要战略。CPS是工业4.0的基石,通过计算、通信与控制技术(3C)实现物理世界与信息世界的深度融合。

2501_92808811的博客 950

数据结构之队列

不会吧不会吧,不会有人不会队列吧......

weixin_74772510的博客 4368

达梦数据库(DM)的备份与恢复功能

本文系统介绍了达梦数据库(DM)的备份与恢复功能,主要包括作业系统和物理/逻辑备份还原两大模块。作业系统部分详细说明了通过代理环境创建定时备份和删除备份作业的步骤;物理备份还原部分阐述了联机和脱机备份方式,包括数据库、表空间、表和归档的备份还原操作;逻辑备份还原部分介绍了dexp/dimp工具的使用方法及四种级别的导入导出功能。文章还介绍了图形化管理工具进行备份还原的操作流程,全面覆盖了达梦数据库的数据保护方案,为数据库管理员提供了详细的技术指导。

weixin_48812832的博客 1211

PyTorch实战(26)——PyTorch分布式训练

在本节中,我们将探讨如何通过跨机器和机器内多进程的分布式训练来加速模型训练过程。我们将系统学习 PyTorch 提供的三大分布式训练 API——torch.distributed、torch.multiprocessing 以及 torch.utils.data.distributed.DistributedSampler,使用这些 API 能够极大的简化分布式训练,介绍如何使用 PyTorch 的分布式训练工具,在 CPU 和 GPU 上加速训练。

盼小辉丶的博客 3843

【数据结构入门】队列(Queue)详解(定义、销毁、入队、出队等)| 图解数据结构,超详细哦~

文章目录(1)前言1)队列的概念2)队列的结构(2)队列的实现(链式结构)1)队列的定义2)队列的初始化3)队列的销毁4)入队(尾插)5)出队(头删)6)获取队列元素个数7)获取队头元素8)获取队尾元素9)检查队列是否为空 数据结构系列文章: 【数据结构入门】顺序表(SeqList)详解(初始化、增、删、查、改) 【数据结构入门】无头单向非循环链表(SList)详解(定义、增、删、查、改) | 图解链表,超生动详细哦~ 【数据结构入门】带头双向循环链表(List)详解(定义、增、删、查、改) | 配有大量图

codewinter的博客 2万+

C# 量子级跨平台开发:用Uno Platform实现Windows、iOS、Android的“量子纠缠”UI同步

墨瑾轩推出编程学习平台,通过XAML的“量子纠缠”技术,实现跨平台开发的高效与一致性。传统方案中,多平台代码重复率高,UI差异大,而量子级方案则通过一套代码构建全平台应用,UI原子化同步,开发效率提升5倍。Uno Platform的“量子纠缠”架构解决了代码碎片化、性能瓶颈和调试难题,实现UI原子化同步、性能提升300%和跨平台数据无缝同步。核心架构包括XAML的跨平台渲染、MVVM的量子叠加态架构、平台差异的量子退相干处理以及性能优化的量子隧穿效应,为开发者提供高效、一致的跨平台开发体验。

java专栏 1165

数据结构与算法:Queue 队列

Queue队列 什么是队列 队列是一种典型的FIFO(front input front output,先进先出)的数据结构,按大类可分为单队列和循环队列。Queue可以普遍来将,可以理解为生活中的排队,有队头和队尾,队头的人会先进行某项操作,新来的人直接排在队尾。当然,Java中对于Queue的实现方式不仅只有FIFO这一种原则,还有LIFO(后进先出类似于栈数据结构)等等。 什么是“单队列”和...

hackerlbj的博客 507

数据分析案例-电影数据可视化分析

数据介绍数据为2011-2021电影数据可视化分析首先导入本次项目需要的包和数据 数据预处理 可视化

m0_64336780的博客 2万+

华为OD机试双机位C卷-敌情监控 (Py/Java/C/C++/Js/Go)

华为OD机试(机考)双机位C卷 【敌情监控】,提供C语言、Java、C++、Python、Go、JavaScript源码实现,并提供完整思路讲解,以及在线OJ模拟做题。华为OD机试 - 敌情监控。

qq_45776114的博客 938

C++ 数据结构之--队列Queue

主要回顾总结队列queue的基本使用方法。

zxy_ZXY123的博客 1242

OpenCV-Python图形图像处理:自用的一些工具函数源代码

本文为《OpenCV-Python图形图像处理:博主自用的一些工具函数功能及调用语法介绍》内容配套函数的源代码。

老猿Python 2495

python数据结构之队列Queue

队列Queue是一种先进先出(FIFO,First In First Out)的线性表。允许一端进行插入(rear),对应的另一段进行删除(front)。 本篇包含以下内容: (1)Queue的基本格式 (2)入队列en_queue (3)删除数据函数 de_queue 1、Queue的基本格式 class Queue(): def __init__(self,size): self.size = size self.front = -1 #设置front初始值,每

jianshuilan_0613的博客 1024

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

【数据结构】队列(Queue)

数组,双链表实现队列,附完整代码

xiaochuan_bsj的博客 1243

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

Java 数据结构:栈、队列、双向队列(Stack、Queue、Deque)

本文介绍了Java中栈、队列、双向队列的实现,总结了Stack类、Queue接口和Deque接口中方法的用法和区别。

Hanx_404的博客 1428

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

Python 数据结构 之 队列(Queue)

队列是一种遵循先进先出(FIFO, First In First Out)原则的线性数据结构,这意味着最早进入队列的元素将最先被移除。常用于任务调度、缓冲区管理等场景。Python 提供了多种实现队列的方式,包括内置模块和第三方库。Python中的queue模块提供了多种队列实现,每种类型都有其独特的应用场景。无论是多线程编程中的线程安全通信,还是任务调度中的优先级管理,亦或是图算法中的广度优先搜索,queue都发挥着不可或缺的作用。通过合理选择和使用队列,开发者可以编写出更加高效、可读性更强的程序。

weixin_50877427的博客 981

【数据结构五】队列和Queue详解

双端队列(deque)是指允许两端都可以进行入队和出队操作的队列,deque 是 “double ended queue” 的简称。其中物理结构即顺序结构和链式结构,因为队列的使用情况多为增加和删除,很少查询,所以我们使用链表来实现一个自己的队列。:只允许在一端进行插入数据操作,在另一端进行删除数据操作的特殊线性表,队列具有先进先出。在java中,Queue是个接口,底层是通过链表实现的,下面是Queue提供的方法。在基于顺序结构实现的队列中,数组头部排出数据后,空间便不能在被使用,来自力扣的两道算法题。

2203_75565612的博客 1229

队列数据结构 Queue.h

/////////////////////////// //    // //   队列数据结构       Queue.h // //    // ////////////////////////// #include template class Queue; template class QueueNode { friend class Queue; private: Type data;

布衣天使 1617

【数据结构】队列与Queue接口

在Java里Queue是一个接口,其内部方法主要有入队出队等,有很多实现他的类比如我们之前说到过的LinkedList,在Java里队列的使用可以分为阻塞队列(BlockingQueue)与非阻塞队列还有双端队列(Deque),一般多线程情况下我们常常使用阻塞队列实现生产者消费者模型如果使用普通的数组去实现队列这一数据结构时,会有一个很严重的问题----内存浪费。

qq_61903414的博客 895

数据结构随笔——两种队列,及STL中的queue

我们在操作系统中会遇到疑似死机后,你的鼠标随便点也没什么作用,但过一会后,就会把你的鼠标操作都执行一遍,在这个过程中,就使用了队列这种数据结构的排序功能。 队列( queue )是只允许在一端进行插入操作,而在另一端进行删除操作的线性表。允许插入的一端称为队尾,允许删除的一端称为队头。 一、链式队列 链式队列,类似于链表的一种队列,从空间上来说链式队列没有固定长度,比起顺序储存的循环队列来说,多了...

一枚菜鸡 969

数据结构学习系列——队列Queue(一)

一、基本概念: 队列(Queue):一种先进先出(FIFO)的数据结构,即先入队的数据,出队的时候也要先出队。 二、Java中Queue的方法 在Java中,Queue接口与List、Set同一级别,都是继承了Collection接口。因此,具有从Collection接口处继承来的相关方法:addAll, clear, contains, containsAll, equals, hashCode...

反反复复的博客 314

5分钟入门JavaScript队列(Queue)数据结构【JavaScript数据结构与算法系列】

本文目录一、什么是JavaScript队列数据结构二、创建一个JavaScript队列三、封装队列方法①向队列添加元素②检查队列是否为空③获取队列的长度④从队列移除元素⑤查看队列头元素⑥清空队列⑦创建toString方法五、使用Queue类四、本章小结五、写在后面 一、什么是JavaScript队列数据结构 在上一篇文章中,我们了解并学习了JavaScript栈数据结构,本章开始JavaScript的队列数据结,第一章先认识队列与怎么去封装一个队列。 前面的文章里我们已经学习了栈。队列和栈非常类似,但是使用

狼丶宇先森的网络科技空间 2178
上一篇: C++常见错误
下一篇: leetcode第709题:转换成小写字母
ny_Ann
博客等级 码龄3年 181粉丝 14原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值