数据结构(队列)
一.什么是队列
1.队列定义
队列是一种特殊的线性表,特殊之处在于他只允许在表的前端(front)进行删除操作,而在表的后端(rear)进行插入操作。和栈一样,队列也是一种操作受限制的线性表。进行插入操作的一端称为队尾,进行删除操作的一端称为队头或者队首。
2.队列特点
① 队列中的元素满足先进先出(FIFO)的特点,即先进入队列的元素总是最先从队列移出。这种特点使得队列在处理数据时具有优势,能够高效地组织和管理进程。同时,先进先出也保证了队列中元素的顺序稳定,避免了一些特护情况下的数据丢失。
② 限制插入和删除操作:队列只允许在队尾插入元素,在队头删除元素。
③ 应用广泛:队列在计算机领域中应用广泛,如操作系统、网络通信、数据压缩等,在实际生活中,排队买票、办理业务等也可以用队列来模拟和处理。

二.队列的基本操作
1.首先定义一个队列接口,编写队列的几种基本操作
public interface myQueue<T> {// 入队void offer(T val);// 出队T poll();// 查看队首元素T getFront();// 获取当前队列中的元素个数int getSize();// 判断队列是否为空boolean isEmpty();}
2.我们创建一个类去实现我们自己撰写的接口
// 以数组为队列的数据存储结构
public class ArrOrdQueue<T> implements myQueue<T> {private MyArray<T> data;int size;public ArrOrdQueue() {this.data = new MyArray<>(100);this.size = 0;}@Overridepublic void offer(T val) {this.data.add(val);this.size++;}@Overridepublic T poll() {if(isEmpty()){return null;}return this.data.removeFromLast();}@Overridepublic T getFront() {if(isEmpty()){return null;}return this.data.getValue();}@Overridepublic int getSize() {return this.data.getSize();}@Overridepublic boolean isEmpty() {return this.data.isEmpty();}}
3.入队操作
// 添加元素public void add(T item) {this.arr[this.size] = item;this.size++;}
4. 判断队列是否为空
// 判空public boolean isEmpty() {return this.size == 0;}
5.出队操作
public T removeFromLast() {T delVal = this.arr[this.size - 1];this.size--;return delVal;}
6. 查看当前队头元素
public T getValue() {return getValueByIndex(this.size - 1);}// 获取指定位置的值public T getValueByIndex(int index) {// 入参判断if (index < 0 || index > capacity) {throw new IllegalArgumentException("索引异常!");}return this.arr[index];}
7.获取当前队列中元素的个数
// 获取元素个数public int getSize() {return this.size;}
三.队列的应用
① 图的遍历算法中的广度优先搜索就可以用队列辅助。
② 可用于计算机的模拟。
③ 可作为CPU的作业调度。使用队列来处理,可实现先到先执行的要求
相关文章:
数据结构(队列)
一.什么是队列 1.队列定义 队列是一种特殊的线性表,特殊之处在于他只允许在表的前端(front)进行删除操作,而在表的后端(rear)进行插入操作。和栈一样,队列也是一种操作受限制的线性表。进行插入操作的一端称为队尾,进行删除操作的…...
docker容器启动后修改或添加端口 nacos容器 版本2.x需要额外开放9848、9849
1.输入docker ps -a查看需要修改的容器ID: 记录下、 docker ps -a 2.停止docker systemctl stop docker 3.进入docker 容器文件夹,找到对应容器的位置: docker的默认文件夹应该是/var/lib/docker 如果不是root用户查看的话,可能会出现权限…...
C语言实现归并排序算法(附带源代码)
归并排序 把数据分为两段,从两段中逐个选最小的元素移入新数据段的末尾。 可从上到下或从下到上进行。 动态效果过程演示: 归并排序(Merge Sort)是一种分治算法,它将一个数组分为两个子数组,分别对这两个…...
考研C语言刷题基础篇之分支循环结构基础(二)
目录 第一题分数求和 第二题:求10 个整数中最大值 第三题:在屏幕上输出9*9乘法口诀表 第四题:写一个代码:打印100~200之间的素数 第五题:求斐波那契数的第N个数 斐波那契数的概念:前两个数相加等于第三…...
Scala基础知识
scala 1、scala简介 scala是运行在JVM上的多范式编程语言,同时支持面向对象和面向函数式编程。 2、scala解释器 要启动scala解释器,只需要以下几步: 按住windows键 r输入scala即可 在scala命令提示窗口中执行:quit,即可退…...
数学建模-------误差来源以及误差分析
绝对误差:精确值-近似值; 举个例子:从A到B,应该有73千米,但是我们近似成了70千米;从C到D,应该是1373千米,我们近似成了1370千米,如果使用绝对误差,结果都是3…...
Arduino和MPLAB X 开发STM32F103和PIC16F15376
要点: 使用Arduino开发STM32F103(Blue Pill),MPLAB X 开发PIC16F15376(Curiosity Nano)C/C嵌入式开发ESP32(Arduino、ESP-IDF)和STM32实时操作系统FreeRTOS STM32使用FreeRTOS示例 在使用 FreeRTOS 时&a…...
手机操作系统Android
▶1.Android系统概述 Andaid(读[安卓)由Coosle公司和开放手机联盟共同开发,它是基于Lmx内核的开源操作系统。Andtoid主要用于移动设备,如智能手机和平板计算机。2008年发布了第一部Andtoid智能手机,以后Android逐渐扩展到平板计算机、电视、…...
2024年,你是否还在迷茫?
2024年,你是否还在迷茫? 别担心!鸿蒙来了,这个未来技术的制高点,为你提供了答案! 诸多大厂疯抢、24年预计鸿蒙相关的岗位需求将达到百万级、就业均薪达到19K,全国高校开课…… 种种现象都在表…...
ART: Automatic multi-step reasoning and tool-use for large language models 导读
ART: Automatic multi-step reasoning and tool-use for large language models 本文介绍了一种名为“自动推理和工具使用(ART)”的新框架,用于解决大型语言模型(LLM)在处理复杂任务时需要手动编写程序的问题。该框架可…...
Github 2024-01-26 开源项目日报Top10
根据Github Trendings的统计,今日(2024-01-26统计)共有10个项目上榜。根据开发语言中项目的数量,汇总情况如下: 开发语言项目数量Python项目4Jupyter Notebook项目2HTML项目1Shell项目1Dockerfile项目1非开发语言项目1Go项目1Rust项目1 高级…...
免费的 UI 设计资源网站 Top 8
今日与大家分享8个优秀的免费 UI 设计资源网站。这些网站的资源包括免费设计材料站、设计工具、字体和其他网站,尤其是一些材料站。它们是免费下载的,材料的风格目前很流行,适合不同的项目。非常适合平面设计WEB/UI设计师收藏,接下…...
人机协同对人工智能治理的影响
人机协同对人工智能治理的影响是多方面的。 首先,人机协同可以提供更有效的人工智能监管和治理机制。人工智能系统通常需要大量的数据来训练和运行,而人类在监管和治理方面有独特的能力。通过人机协同,人们可以利用他们的主观意见和专业知识来…...
Form.List的使用,设置某个字段的值
1.Form.Item的name <Form.Itemname{[base_range, company_base_range_start]}dependencies{[[base_range, company_base_range_end]]}rules{[{ required: true, message: 请输入下限 },{validator: (_, value) >validateMoneyRule(value,base_range?.company_base_range…...
React16源码: React中的updateHostComponent的源码实现
updateHostComponent 1 )概述 在 completeWork 阶段的 HostComponent 处理,继续前文所述在更新的逻辑里面,调用了 updateHostComponent进行前后props对应的dom的attributes变化的对比情况这个方法也是根据不同环境来定义的,我们这…...
uniapp导入uView组件库
目录 准备工作 1. 新建一个项目 2. 导入uview组件库 3. 关于SCSS 配置步骤 1. 引入uView主JS库 2. 在引入uView的全局SCSS 3. 引入uView基础样式 4. 配置easycom组件模式 添加效果实验运行即可成功 准备工作 1. 新建一个项目 2. 导入uview组件库 在进行配置之前&#x…...
防御保护----防火墙的安全策略、NAT策略实验
实验拓扑: 实验要求: 1.生产区在工作时间(9:00-18:00)内可以访问DMZ区,仅可以访问http服务器; 2.办公区全天可以访问DMZ区,其中10.0.2.10可以访问FTP服务器和HTTP服务器…...
# 安徽锐锋科技IDMS系统简介
IDMS 由安徽锐锋科技独立开发 该系统负责和海算以及UE\UNITY的无缝衔接并具备远程数据库访问、高速数据库的自动创建及数据存储、支持MQTT等多种物联网接口,支持多种算法。主要完成由于物料、人员、生产、故障、不良异常、订单异常带来的生产损失,通过海…...
Notepad在文件中查找多行相同内容的文字
Notepad在文件中查找多行相同的内容 查找:打开 Notepad软件, Ctrl F 查找 。输入关键词, 点击【在当前文件中查找】。 复制:直接在下方的【搜索结果】复制。 Notepad提取含有特定字符串的行 详情见: https://blog…...
Python高超音速导弹
Python高超音速导弹的全自动化开发研发具有重要性的原因如下: 提高研发效率:全自动化开发可以通过自动化工具和流程,快速完成各种任务,包括代码编写、测试、集成和部署等。这样可以大大提高研发效率,缩短开发周期。 减…...
BotW-Save-Manager终极方案:深度解析《塞尔达传说:旷野之息》跨平台存档迁移技术
BotW-Save-Manager终极方案:深度解析《塞尔达传说:旷野之息》跨平台存档迁移技术 【免费下载链接】BotW-Save-Manager BOTW Save Manager for Switch and Wii U 项目地址: https://gitcode.com/gh_mirrors/bo/BotW-Save-Manager 你是否曾在Wii U上…...
蓝桥杯 电池分组
...
League-Toolkit:英雄联盟智能辅助工具的效率提升之道
League-Toolkit:英雄联盟智能辅助工具的效率提升之道 【免费下载链接】League-Toolkit 兴趣使然的、简单易用的英雄联盟工具集。支持战绩查询、自动秒选等功能。基于 LCU API。 项目地址: https://gitcode.com/gh_mirrors/le/League-Toolkit League-Toolkit是…...
强强联合!望石智慧携手华为、华鲲振宇发布AI药物研发联合解决方案,共筑中国智慧医药创新生态
近日,以“因聚而升 融智有为”为主题的华为中国合作伙伴大会2026在深圳圆满落幕。望石智慧作为其国内AI驱动医药创新领域的核心技术伙伴受邀参会,并在智能制造医药行业论坛发表演讲。会议期间,望石智慧、华为、华鲲振宇三方达成战略级生态合作…...
纺织抗菌,选对材料才关键
在纺织行业中,抗菌消臭性能是提升产品附加值的核心抓手,其中贴身衣物、家纺等贴身类产品,因长期接触人体或所处环境特性,细菌滋生、异味残留等问题尤为突出。DN128抗菌消臭剂作为高效无机消臭材料,可广泛用作面料及家纺…...
SEO_详解SEO优化的完整工作流程与执行要点
<h2>SEO优化的重要性</h2> <p>在当前数字化时代,网站的可见度和流量直接关系到企业的市场竞争力。搜索引擎优化(SEO)作为提升网站在搜索引擎中排名的关键手段,其重要性不言而喻。SEO不仅能帮助企业吸引更多的自…...
从‘画图’到‘造芯’:模拟版图工程师必须懂的CMOS工艺那些事儿
从‘画图’到‘造芯’:模拟版图工程师必须懂的CMOS工艺那些事儿 当你第一次打开PDK文档,面对密密麻麻的设计规则表格时,是否感觉像在解读天书?作为模拟版图工程师,我们每天都在与纳米级的几何图形打交道,但…...
Typora式优雅写作体验:基于PyTorch模型的智能Markdown内容助手
Typora式优雅写作体验:基于PyTorch模型的智能Markdown内容助手 1. 重新定义写作工具 想象一下这样的场景:你正在用Markdown写一篇技术文档,刚敲下几个关键词,编辑器就自动补全了整个段落;当你纠结某个表达是否恰当时…...
Element-UI Loading动画实战:如何优雅处理路由跳转与请求拦截(附自定义图标技巧)
Element-UI Loading动画深度优化:从路由拦截到视觉定制的完整方案 在Vue技术栈项目中,Element-UI的Loading服务是提升用户体验的关键组件之一。当页面需要等待数据加载或路由跳转时,一个流畅的加载动画能有效缓解用户的焦虑情绪。本文将深入探…...
Termius vs SecureCRT:为什么这款内置FTP的SSH工具更适合中文用户?
Termius vs SecureCRT:为什么这款内置FTP的SSH工具更适合中文用户? 作为开发者,每天与服务器打交道是家常便饭。选择一款趁手的SSH工具,就像程序员挑选键盘一样重要——不仅要功能强大,更要符合个人使用习惯。对于中文…...
