数据结构——队列(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万+

AI学习记录 - transformer的位置编码的理解

先看三角函数为什么可以,我们看下三角函数的图像先提一个点:位置信息肯定是唯一的,或者是在很长的文字当中,起码重复度不会太高,x轴代表位置,y轴代表叠加上去的值1、假设只使用一个三角函数sin,我们将第2和第14两个位置输入到sin,他们的值很像,在神经网络的训练中,很容易把第2个位置和第14个位置当成是一个位置,不满足我们上面说到的要求位置唯一性。sin2sin14。

weixin_43954090的博客 1412

数据结构之队列

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

weixin_74772510的博客 4368

AD从原理图到PCB超详细教程

我在学习AD的时候,看了网上很多教程,但是东西很杂,有很多条理不清而且废话很多,所以相信大家学习的时候也是遇到一样的困难。我就特地写一篇帖子,整理了一下AD从画原理图开始一直到画完PCB文件的所有步骤,一方面是供大家参考学习,另一方面可以方便我自己学习记忆更加深刻。我用的版本是AD16中文版,大家用新的版本AD20或者AD22应该操作都是差不多的。

人生寂寞如雪 18万+

烽火HG680-LC刷机后体验:当贝纯净桌面+讯飞语音,老盒子秒变智能电视的折腾记录

本文详细记录了烽火HG680-LC机顶盒刷机后的使用体验,通过安装当贝纯净桌面和讯飞语音助手,老盒子焕发新生,实现无广告、快速响应的智能电视功能。文章对比了刷机前后的性能差异,分享了影音播放、语音控制等实用功能,并提供了ADB调试和问题解决的实用技巧,帮助用户将闲置的运营商盒子变身为高性能的智能影音中心。

weixin_30292843的博客 472

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

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

codewinter的博客 2万+

骁龙X Elite笔记本重装Windows 11 Arm64系统完整指南与避坑手册

UEFI安全启动和Arm64架构是理解现代计算设备系统部署的基础。UEFI取代传统BIOS,提供了更安全的启动环境和模块化固件接口,而Arm64架构则以其高能效特性,在移动和新兴PC领域日益重要。其技术价值在于为设备带来更快的启动速度、更强的安全防护以及更优的功耗表现。在应用场景上,这直接关系到搭载高通骁龙X Elite等Arm处理器的笔记本电脑的系统安装与维护。对于这类设备,重装系统远非插入通用安装盘那么简单,核心挑战在于必须使用专为Arm64编译的Windows镜像,并需提前集成芯片组、网络等硬件的专属

weixin_33428613的博客 485

数据结构与算法:Queue 队列

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

hackerlbj的博客 507

YOLOv11改进 - C3k2融合 | C3k2融合CBSA 收缩 - 广播自注意力:轻量级设计实现高效特征压缩,优化处理效率 | NeurIPS 2025

本文介绍收缩 - 广播自注意力(CBSA)((Contract-and-Broadcast Self-Attention))机制,并将其集成到YOLOv11中。传统注意力机制存在黑盒难理解、计算复杂度高的问题,CBSA通过算法展开推导出本质上可解释且高效的注意力机制。它先从输入数据中选出少量代表性tokens,接着对代表进行收缩计算,再将结果广播给所有原始数据。该机制计算量线性增长,具有明确数学解释,还能统一多种注意力机制。我们将CBSA代码集成到YOLOv11的C3k2模块中。实验证明,改进后的YOLOv

魔改工程师的博客 852

LeRobot 入门教程(一)软件环境、部署流程及摄像头配置

🤖 LeRobot:开源机器人学习平台 摘要:LeRobot是一个基于PyTorch的开源机器人学习平台,提供模型、数据集和工具,旨在降低机器人技术门槛。平台包含经过验证的模仿学习和强化学习方法,并提供预训练模型、人类演示数据集及模拟环境。安装需从源码获取,支持Python 3.10环境,可选扩展包括仿真环境(如gym-aloha)、电机控制(Dynamixel/Feetech SDK)和实验跟踪(Weights & Biases)。该平台托管在HuggingFace,并设有社区Discord频道

2506_90492529的博客 3417

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

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

zxy_ZXY123的博客 1242

RK3588&RK3576实现 HW-ID DTB(动态加载不同的Kernel DTB)功能

RK平台的U-Boot⽀持检测硬件上的GPIO或者ADC状态动态加载不同的Kernel DTB,暂称为HW-ID DTB(Hardware id DTB)功能。

Wynter 849

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

OpenTK简介

OpenTK 因其强大的功能、跨平台特性和灵活性,适用于多种需要图形和计算能力的应用场景,为开发者提供了丰富的可能性和创作空间。

仰望星空的博客 1980

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

【数据结构】队列(Queue)

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

xiaochuan_bsj的博客 1243

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

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

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

Hanx_404的博客 1428

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

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、付费专栏及课程。

余额充值