《java数据结构》--队列详解

news2024/11/25 23:28:48

一.认识队列🐱

初识队列😸

队列和栈类似都对数据的存取有着严格的要求,不同的是栈遵循先进后出的原则,而队列遵循先进先出的原则,栈是只有一端可以存取,队列是一端存,一端取。这里我来画一个图(画的不好请见谅)😿😼:

我们一般将如数据的操作叫入队,入队的一端称作队尾,取出数据的操作叫做出队,出队的一端称作队头,根据上面的图我们可以发现元素1是最先入队的并且是最先出队的。举个例子,我们可以将队列看作一把手枪,最先压入的子弹是最先打出的😼。

Java中队列的使用😸

我们要注意的是在java中Queue是一个接口,不能直接实例化,但是LinkedList实现了Queue接口(它的底层是用一个双向链表实现的),可以用Queue接口去实例化LinkedList对象😉。

一下是一下常见的队列方法(之后一一实现):

二.模拟实现队列🐱

队列的一般是用链表来实现因为,使用链表进行头删尾插会比较方便。

//为什么用头删?🤔

因为我们使用的是单链表,如果用尾删,就需要遍历到倒数第二个结点时间复杂度尾O(n),如果头删只需要将头节点指向下一个就行

队列的创建😸

博主这里也是用链表来实现的,为了方便进行尾插,这里我们不仅定义一个头结点还定义一个尾结点。😽

判断队列是否为空😸

直接判断头结点是否为空就可以了

入队😸

我们使用尾插入队

//如果队列为空要让头结点尾节点,都等于新结点

出队😸

查看队头😸

直接返回头结点数据

获取队列中有效元素个数😸

到这里队列我们就聊完了队列,如果有上面不懂的或者其他见解欢迎在下方评论或者私信博主后序博主也会更新一下有关队列的OJ题欢迎大家捧场!!!🥰🥰

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1709174.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

echarts-象形柱图

象形柱图 一般的柱图都是纯色柱图,使用象形柱图可以给柱图定义自己的样式。 样式的调节与柱图一样,核心在于symbol调节柱图的组成。 let options {tooltip: {},xAxis: {type: "category",data: ["d1", "d2", "d3&qu…

Golang | Leetcode Golang题解之第103题二叉树的锯齿形层序遍历

题目: 题解: func zigzagLevelOrder(root *TreeNode) (ans [][]int) {if root nil {return}queue : []*TreeNode{root}for level : 0; len(queue) > 0; level {vals : []int{}q : queuequeue nilfor _, node : range q {vals append(vals, node.V…

啊哈!算法-第2章-栈、队列、链表

啊哈!算法-第2章-栈、队列、链表 第1节 解密qq号——队列第2节 解密回文——栈第3节 纸牌游戏——小猫钓鱼第4节 链表第5节 模拟链表 第1节 解密qq号——队列 新学期开始了,小哈是小哼的新同桌(小哈是个大帅哥哦~),小哼向小哈询问 QQ 号, 小…

揭秘:如何使用Python统计女友生日还剩几天?

新书上架~👇全国包邮奥~ python实用小工具开发教程http://pythontoolsteach.com/3 欢迎关注我👆,收藏下次不迷路┗|`O′|┛ 嗷~~ 目录 一、引言:为何需要统计生日天数? 二、需求分析与准备 1. 用户输入格…

【设计模式】JAVA Design Patterns——Curiously Recurring Template Pattern(奇异递归模板模式)

🔍目的 允许派生组件从与派生类型兼容的基本组件继承某些功能。 🔍解释 真实世界例子 对于正在策划赛事的综合格斗推广活动来说,确保在相同重量级的运动员之间组织比赛至关重要。这样可以防止体型明显不同的拳手之间的不匹配,例如…

云服务器平台AutoDL--基本介绍与使用感受

因为课程作业需要复现DreamBooth,找了几个教程之后,发现了AutoDL这个好东西,芜湖~ 相关概念 以下回答来自于ChatGPT。 云计算平台:云服务器平台是提供按需计算资源和服务的在线平台,通常包括存储、处理能力、数据库、…

Servlet跳转404(解决)

1.解决无法跳转的404问题(最根本,最重要) 查看Project Structure,检查你的JDK版本不要选错版本; 2.页面跳转,url栏输入的是web.xml中的url-pattern内容,请仔细检查 3.关于配置信息Applicatio…

TIM输出比较

一、OC(Output Compare)输出比较 1、输出比较可以通过比较CNT(计数器)与CCR(捕获/比较寄存器)寄存器值的关系,来对输出电平进行置1、置0或翻转的操作,用于输出一定频率和占空比的PW…

C++之对象的使用

1、static成员 2、static成员优点 2、static成员函数 静态成员函数不能访问非静态成员原因:因为没有this指针。也不可以访问非静态成员函数。 可以通过对象来访问静态成员,但是不推荐这么使用,会让人误解成这个x_是属于对象的,但…

Unity3D插件开发教程(二):制作批处理工具

Unity3D插件开发教程(二):制作批处理工具 文章来源:Unity3D插件开发教程(二):制作批处理工具 - 知乎 (zhihu.com) 声明: 题图来自于Gratisography | Free High Resolution Pictures…

区块链的运行原理与演示

目录 前言 具体演示 1、在浏览器中输入区块链演示网址: 2、创建新区块 3、篡改区块信息使其无效 4、新增P2P 网络节点。 5、节点连接。 6、区块信息同步 总结 前言 区块链系统是由一系列分布在全球各地的分布式节点组成的。这些节点互不隶属,通过…

目标检测基础初步学习

目标检测(Object Detection) 目标检测任务说明 在动手学习深度学习中对目标检测任务有如下的描述。 图像分类任务中,我们假设图像中只有一个主要物体对象,我们只关注如何识别其类别。 然而,很多时候图像里有多个我们…

中心入侵渗透

问题1. windows登录的明文密码,存储过程是怎么样的?密文存在哪个文件下?该文件是否可以打开,并且查看到密文? 回答: Windows登录的明文密码的存储过程是: 当用户尝试登录Windows时&#xff0…

MM模块六(收货)

接到供应商收到的货以后,进行一个收货的动作 收货:MIGO 1.消耗物料的采购订单 数量是供应商的数量 消耗物料的采购订单,收进来的货物直接进入消耗,不会增加库存,所以这里没有库存地点进行选择 点击过账 收货后在采购…

ubuntu 配置用户登录失败尝试次数限制

前言: 通过修改pam配置来达到限制密码尝试次数! 1:修改 /etc/pam.d/login 配置(这里只是终端登录配置,如果还需要配置SSH远程登录限制,只配置下面的 /etc/pam.d/pam.d/common-auth 即可) vim…

go-zero 实战(1)

环境准备 go 版本 go version go1.22.2 linux/amd64 goctl 安装 goctl(官方建议读 go control)是 go-zero微服务框架下的代码生成工具。使用 goctl 可以显著提升开发效率,让开发人员将时间重点放在业务开发上,其功能有&#xff1a…

【东山派Vision K510开发板试用笔记】WiFi配网问题

目录 概述 WiFi配网的修改 悬而未决的问题 概述 最近试用了百问网提供的东山派Vision开发板,DongshanPI-Vision开发板是百问网针对AI应用开发设计出来的一个RSIC-V架构的AI开发板,主要用于学习使用嘉楠的K510芯片进行Linux项目开发和嵌入式AI应用开发…

手撕C语言题典——返回倒数第 k 个节点(面试题)

前言 依旧力扣,这道题之前有做过类似的题,今天给一个新的思路去做,应对面试时候遇到的奇奇怪怪的问题 面试题 02.02. 返回倒数第 k 个节点 - 力扣(LeetCode)https://leetcode.cn/problems/kth-node-from-end-of-list-…

英特尔LLM技术挑战记录

英特尔技术介绍: Flash Attention Flash Attention 是一种高效的注意力机制实现,旨在优化大规模 Transformer 模型中的自注意力计算。在深度学习和自然语言处理领域,自注意力是 Transformer 架构的核心组件,用于模型中不同输入元…

PMP报考条件怎么查询?如何判定自己是否符合条件?

PMP报考条件在PMI官网上就可以查询,PMP报考条件只需要符合项目管理培训经历和项目管理经验两个方面的要求即可,大家可以对照下方的规定判断自己是否符合PMP报名条件 PMP报考条件 以下是PMI(中国)官网对于PMP报名条件的规定&…