数据结构(2)-队列

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


队列结构的特殊之处在于它只允许在表的前端(front)进行删除操作,而在表的后端(rear)进行插入操作,和栈一样,队列是一种操作受限制的线性表。进行插入操作的端称为队尾,进行删除操作的端称为队头。

一、队列结构的分类

  • 普通对列结构(quene)
  • 双端对列结构(de-que)
  • 优先级队列结构(pri-que)

二、用Java实现普通队列结构

2.1、基于数组
public class Quene {
    private int size;//队列长度
    private int front;//队头索引
    private int rear;//队尾索引
    private int[] theQuene;//用数组构造队列结构
    private int items;//当前队列的元素数

    public Quene(int size){
        this.size = size;
        theQuene = new int[size];
        front = 0;
        rear = -1;
        items = 0;
    }

    //入队
    public void  insert(int value){
         if(rear == size - 1){
             //已经满队,另队尾为-1,从队头插入
            rear = -1;
         }
         theQuene[++rear] = value;
         items++;
    }

    //出队
    public int remove(){
        int temp = theQuene[front++];
        if(front == size){
            front = 0;
        }
        items--;
        return  temp;
    }

    //查看队头
    public int peek(){
        return theQuene[front];
    }

    //是否为空队
    public boolean isEmpty(){
        return (items == 0);
    }

    //是否为满队
    public boolean isFull(){
        return (items == size);
    }

    //对列当前元素数
    public int sizeOf(){
        return items;
    }
}
2.2、基于链表

public class LinkedListQuene<T> {
    //队列大小
    private int queneLength = 0;
    //队头
    private Node first;
    //队尾
    private Node last;

    //链表节点
    private class Node {
        //指向下一节点
        Node next;
        //节点携带的数据
        T value;
        private Node(T value) {
            this.value = value;
        }
    }

    
    public boolean isEmpty() {
        return queneLength == 0;
    }


 
    public int depth() {
        return queneLength;
    }
  
    public int enquene(T value) {
        Node node = new Node(value);
        //分两种情况,空队列和非空队列
        if (isEmpty()) {
            first = node;
            last = node;
            queneLength++;
            return 1;
        } else {
             Node oldNode = last;
            oldNode.next = node;
            last = node;
            queneLength++;
            return 1;
        }
    }

 
    public T dequene() {
        if (isEmpty()) {
            return null;
        } else {
            T value = first.value;
            first = first.next;
            queneLength--;
            return value;
        }
    }
 
    public T peek() {
        if (isEmpty()) {
            return null;
        } else {
            return first.value;
        }
    }
}
华为项目TR5评审后发现了重大缺陷的应急处理经验 华为TR5评审后发现重大缺陷时,启动分级应急机制:1)缺陷分级:按严重性(致命/严重/一般)评估影响;2)应急响应:跨部门会议制定方案,冻结生产并调配资源;3)根因修复:通过RCA定位问题,设计变更后回归测试;4)变更管理:评审修复影响,调整发布策略;5)持续改进:记录缺陷闭环,优化流程。案例显示,软件闪退问题通过热修复补丁和代码重构解决。关键工具包括Jira、FMEA等,确保缺陷在量产前拦截,降低风险。 阅读详情

相关推荐

DNF单机版搭建全攻略:从零开始到局域网联机(含常见问题解决)

本文提供详细的DNF单机版搭建指南,从环境配置到局域网联机设置,涵盖服务端安装、数据库配置及常见问题解决方案。适合新手和有经验的玩家,帮助快速搭建专属游戏服务器,重温经典游戏体验。

weixin_30832143的博客 849

JAVA队列( Queue ) 详解

什么是队列? 队列是一种特殊的线性表,遵循先入先出、后入后出的基本原则,一般来说,它只允许在表的前端进行删除操作,而在表的后端进行插入操作,但是java的某些队列运行在任何地方插入删除;比如我们常用的 LinkedList 集合,它实现了Queue 接口,因此,我们可以理解为LinkedList 就是一个队列; java队列特性 队列主要分为阻塞和非阻塞,有界和无界、单向链表和双向链表之分; 阻塞和非阻塞 阻塞队列 入列(删除元素)时,如果元素数量超过队列总数......

叶新东老师的博客 9万+

SAP 对接CBS(http方式)

CLEAR:lv_xml_crc32_string. CONCATENATEcrc32_passwordcrc32_keyi_stringINTOlv_xml_crc32_string. CONDENSElv_xml_crc32_string. CALLFUNCTION'SCMS_STRING_TO_XSTRING' EXPORTING text=lv_xml_crc32_string encoding='8400' "GB...

3599

JAVA队列(Queue)用法附实例讲解

队列用于模拟队列这种数据结构,队列通常是指“先进先出”的容器。新元素插入(offer)到队列的尾部,访问元素(poll)操作会返回队列头部的元素。通常,队列不允许随机访问队列中的元素。

机智大头 1万+

空心杯电机在美容仪器中的应用:为什么你的洗脸刷动力这么强?

本文深入解析了空心杯电机如何成为高端美容仪器的核心动力源。通过对比传统电机,揭示了其无铁芯、低惯量、零齿槽效应的技术优势,从而实现了强劲动力、极致静音与细腻震动的用户体验。文章详细阐述了空心杯电机在洁面刷、导入仪等美容仪器中的具体应用与选型考量,并指出了开发中驱动匹配、测试等关键实战要点。

j2k3l4的博客 1014

基于人脸识别的智能门禁系统设计

在当前的技术背景下,本文精心打造了一款前沿的视频识别门禁控制系统。在进行调试的时候使用的软件是Keil,编写完代码,生成文件后用下载器下载到单片机上,就能够进行程序的调试了,本次设计实现了预先设定的目标,达到了预期的效果。本次设计的人脸识别的门禁控制系统其硬件部分是以STM32F103C8T6为核心的单片机,采用0V2640摄像头对人员的人脸识别,采用矩阵按键对系统的操作以及密码的输入,使用蜂鸣器来作为报警模块,开门装置是电子锁控制,显示设备采用OLED液晶显示,无线模块在一番思索后选择了蓝牙模块传输。

2401_86147581的博客 1299

Java的Queue(队列)

Java提供了Queue接口作为队列的抽象表示,它是Java集合框架的一部分。Queue接口继承了Java的Collection接口,并扩展了一些额外的方法,以提供队列特定的功能。PriorityQueue:PriorityQueue类实现了Queue接口,并提供了优先级队列的功能。通过使用Queue接口及其实现类,你可以方便地进行队列操作,如添加元素、删除元素、获取队列头部元素等。ArrayDeque:ArrayDeque类实现了Queue接口,并以动态数组的形式提供了队列的功能。

weixin_64353239的博客 1893

YOLOv13改进策略【Neck篇】| GSConv 轻量卷积,Slim-Neck 减参数还不掉点

Neck 篇的第二篇继续"替换式"改进,这次的对象是 Neck 里的下采样卷积。GSConv 出自《Slim-neck by GSConv: a better design of lightweight detector》(2022),它的出发点:DWSConv(深度可分离)轻但"信息混不进通道",标准卷积重但表达好——GSConv 用GConv(分组卷积)混通道 + DWConv 补空间 + Channel Shuffle 打散,两全其美。

qq_53329130的博客 30

Java基础 集合(三)Queue详解

Java基础 集合(三)Queue详解

A乐神的博客 4605

一文探讨视频秒开:m3u8视频格式与视频秒开优化

秒开指的是,一秒内成功加载的播放数/播放总数。本意是想对比一下m3u8与mp4视频格式,并了解m3u8格式优缺点,以确定一个大概优化方向。但对m3u8做简单了解后,觉的m3u8可能是一个优化方向。

bjxiaxueliang的CODING小栈 2万+

使用 SAP 自家的 AI 工具 Joule 辅助 SAP Fiori 应用开发

SAP Joule 不请自答,解释说标记了接口的 UI Component,具备进行异步内容创建的能力,比如其通过 rootView 分配的视图,在运行时可以异步创建。目前 SAP Business Application Studio 里的 SAP Joule 支持下面这八种上下文,绝大部分都和 SAP UI5 开发相关,剩下的则是代码仓库和 SAP 帮助文档的搜索。SAP Joule 回答的大意是:我只负责回答 SAP UI5 开发相关的问题,不要和我扯其他有的没的。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 1099

[AS2,数据结构]队列的实现: (Implementation Data Structure in ActionScript2.0---Queue)

[AS2,数据结构]队列的实现: (Implementation Data Structure in ActionScript2.0---Queue)                                                                                                  By EmilMatthew   05/9/6Acti

2047

生成对抗网络(GAN)在数据增强中的应用【附核心实战代码】

生成对抗网络(GAN)由Ian Goodfellow等人在2014年提出。它包含两个主要的部分:生成器(Generator)和判别器(Discriminator)。生成器负责生成假数据,而判别器则用于区分输入的数据是真实的还是由生成器生成的。通过这种对抗过程,生成器不断优化自己,生成越来越真实的样本。最终,生成器生成的样本几乎无法被判别器区分与真实数据。

一键难忘的博客 3120

数据结构2-2 队列

数据结构2-2 队列队列的概念队列的模型队列的功能STL 队列 本文是介绍关于队列的基础知识,以及其STL 队列的使用。 队列的概念 队列是一个十分具体的数据结构,队列满足先进先出(FIFO)的基本规则。队列如同其名字一样,就像是存储的数据排成一队。 队列的模型 队列的模型可以使用数组或者链表作为存储方式,构造队列的数据结构。 数组模拟队列代码: int q[MAXN]; int front = MAXN/2-1 , back = front; 在模拟队列时不要直接将首元素作为队列起点,可以避免在往队首

CSNO.i的博客 166

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

2数据结构之队列

队列介绍: 队列是一个有序列表,可以用数组或者链表来实现。 遵循先进先出的原则。也就是说,添加数据的时候从队列尾部添加,取数据的时候从队列首部开始取。 模拟图: maxSize指的是队列容量大小,也就是能存储多少个元素。 front 指向队列头部第一个元素的前一个元素,初始值我们假设为 -1 rear指向队列尾部最后一个元素元素,初始值我们假设为为 -1 当rear=maxSize - 1时,此时队列表示已满; 当rear<maxSize - 1时,此时队列表示还可以继续添加数据;

CSDg166的博客 2528

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

数据结构2——栈与队列

大家在学校都去过食堂吧,食堂的窗口前一般或多或少都会有人排队,前面的人拿到饭菜后后面的人跟上去,如果有其他人想要买到这份饭就得去队伍的最后排队(插队是不允许的!),队列就是这种结构,即先进先出队列是只允许在一端进行插入操作,而在另一端进行删除操作的线性表队列是一种先进先出的线性表,允许插入的一端称为队尾,允许删除的一端称为队头。

2401_88685396的博客 655

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

2.数据结构之队列

手写基础数据结构,编程也可以很有趣。数组实现队列、环形队列

知之为知之,不止于信。 267

数据结构:2、队列

数据结构:队列 队列是一种特殊的线性表,特殊之处在于它只允许在表的前端(front)进行删除操作,而在表的后端(rear)进行插入操作,和栈一样,队列是一种操作受限制的线性表。进行插入操作的端称为队尾,进行删除操作的端称为队头。 队列是一种基于先进先出(FIFO)策略的集合类型。 数组实现队列出现的问题: 为什么用环形队列:如果不是环形队列:我们每次取出对头元素时,如果font指针向后挪动一...

qq_40609192的博客 184

[入门必看]数据结构3.2:队列

数据结构3.2:队列

m0_58991879的博客 1251

数据结构day2——队列

1.什么是队列 一种先进先出的线性表。 2.实现方式 1)顺序队列 高效率队列:假定循环数组的概念,随着往队列里不断的插入和取出数据,整个队列往数组的右边移动,再将数组的第n-1个位置定义为位置0的前驱。这样可使得队列的插入和删除的时间复杂度都为O(1). 这样做会出现新的问题,就是如何判断队列的空或者满。 定义两个指针,分别是front,指向队列的首个元素,rear指针,指向队列的最...

qq_39910168的博客 174

数据结构与算法2-2 栈与队列之队列

目录1.队列的概念 (1)队列的定义 (2)队列的特点 (3)队列的存储结构2.队列的基本操作 (1)顺序队  ①顺序队的定义  ②顺序队的状态 (2)链队 1.队列的概念  (1)队列的定义   队列简称队,也是一种操作受限的线性表,它只允许在一端进行插入操作,在另一端进行删除操作的线性表。其中允许插入(也称入队,进队)的一端称为队尾(Rear),允许删除(也称出队)的一端称为队头(Front)。  (2)队列的特点   如下图所示,有一个有5个元素的队列,入队的顺序为a1、a2、a3、a4、a5,出队的

weixin_43972499的博客 284

数据结构2队列

head和tail相等 解决方法:浪费一个空间 有一个空间永远不用 tail+1=head。循环队列:(入队列(tail端口)) (出队列(head出队列))一个不大于MAX的数与MAX取余运算,结果仍然是该数的本身。双端队列:既有栈的特性也有列的特性(头尾都可以进入队列)是一种head和tail都可以进出队列的数据表示形式。1,顺序队列-连续分布的占用连续的内存空间。如果要出队列队列头要指向下一个可用的元素。原来尾部只能入队列 现在可以出队列。原来头部只能出队列 现在可以入队列。

qq_57265620的博客 108

数据结构学习2-队列

数据结构学习2-队列1.队列介绍2.用数组模拟队列2.1思路分析2.2 撸代码进行实践①定义相关变量和构造函数。②添加数据到队列中。③从队列中取数据。④显示队列的现有数据。⑤显示队列的头数据。⑥进行验证 1.队列介绍 队列遵循先入先出原则。先存入队列的数据先取出,后存入队列的数据后取出。 如图,可以把它理解为一个单向通道: 2.用数组模拟队列 2.1思路分析 首先我们需要一个数组arr[]来存...

cjm2484836553的博客 357

c++数据结构2——队列结构详解

队列(Queue)是C++中重要的数据结构,遵循先进先出(FIFO)原则。

overload100的博客 1393

数据结构实验2:队列的应用

可以使用结构体来定义队列的基本结构。一个典型的队列结构可能包括一个数组(用于存储数据元素)和两个指针(分别指向队列的前端和后端)。front指向队列的第一个元素,rear指向队列的最后一个元素。

weixin_58628068的博客 1425

数据结构 2 之栈和队列

数据结构之栈和队列1 栈Stack的特性2 栈Stack的应用2 栈Stack的基本实现2 栈Stack的复杂度分析 1 栈Stack的特性   1、栈是一种线性结构   2、相比数组,栈的操作可以看作是数组的子集   3、只能从一端添加(栈顶)数据,也只能从一端取出数据   4、先进后出、后进先出(LIFO)last in first out 2 栈Stack的应用   栈在计算机系统中...

ChengZi~ 168
上一篇: 数据结构(1)-栈
下一篇: SpringBoot学习笔记(13)-使用MyBatis分页插件PageHelper
BoringRong
BoringRong 领域专家: 后端开发技术领域 领域专家: 后端开发技术领域
博客等级 码龄9年 2万+粉丝 386原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

BoringRong

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值