栈和队列:队列

目录

队列概念:

队列:

先进先出:

与栈的区别:

队列的实现:

关于节点指针的封装:

初始化: 

入队: 

出队: 

 获取队头元素和获取队尾元素:

判断队列是否存在: 

获取队列长度:

销毁队列:

主函数部分: 


队列概念:

队列:

队列:只允许在一端进行插入数据操作,在另一端进行删除数据操作的特殊线性表。

特点:队列具有先进先出 FIFO(First In First Out)

  • 入队列:进行插入操作的一端称为队尾
  • 出队列:进行删除操作的一端称为队头

先进先出:

队列顾名思义,和排队有着相似的情况,也就是在队伍前排的人能够先享受到服务,也就是先离开队伍。

与栈的区别:

  • 队列与栈的最大区别除了先进先出和后进先出的不同外,还有一对一和一对多的不同。
  • 在栈中,入栈和出栈的关系是一对多,入栈的同时可以出栈,且可以连续出栈,而队列的入队出队只能是一对一,一边入队一边出队。 

队列的实现:

相比于栈使用顺序表实现,而对于队列而言使用单链表实现队列无疑是最好的选择。 

单链表:链表——单链表的简单介绍-CSDN博客 

关于节点指针的封装

  • 因为需要一个头节点和一个尾节点分别作为队头和队尾,且都需要传二级指针
  • 所以为了方便,我们直接搞一个结构体把二者存进去,然后调用结构体即可,且调用的还是一级指针
  • 同时我们还需要计算队列的长度,于是在结构体中,我们也加入了长度的成员变量。
  • 当然,如果不想要封装也可以,但是因为我们队列的核心是头删和尾插,如果单纯的按照单链表的进行,那么只需要一个头节点指针的话,之后的获取队尾元素和计算长度,以及尾插操作都需要进行遍历,非常的麻烦。
  • 因此,我们这里设计一个尾指针,就和一些OJ题的创造一个新的链表操作一样,方便找尾。

初始化: 

入队: 

这里就和单链表一样,创造一个新的节点,对新节点进行赋值,然后改变尾节点指针指向,以及修改新节点的后继指针(next)指向,就相当于单链表尾插

出队: 

相当于单链表头删,将头节点指针指向改变称为后面一个节点,同时我们还需要注意头删的时候需要进行判断,如果队列是空的头删没有意义。

同时后面的if语句是表明当队列只有一个节点时,头删到最后就变成了空的队列,空的链表。

 获取队头元素和获取队尾元素:

判断队列是否存在: 

获取队列长度:

在此之前封装头节点指针和尾节点指针,以及队列长度的结构体起到了关键性作用! 

销毁队列:

和单链表一样,使用临时变量进行存储头节点,随后进行遍历删除和释放空间 

且和栈一样,都会导致最后队列为空 

主函数部分: 


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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

如何以编程方式获取Android手机的电话号码?

在创建Android应用程序时,很多时候我们需要通过手机号码进行身份验证。为了增强用户体验,我们可以在移动系统中自动检测手机号码。因此,让我们开始一个android项目吧!我们将创建一个按钮,单击它时将获得一个手机号码并将其显示在 TextView 中。 分步实施 步骤 1:创建新项…

程序员突如其来的生日惊喜

不得不说,今天就是我的生日。也就是吹个蜡烛吃个蛋糕,但是我非常惊讶,我的博客在今天突然飙涨! Top1 我自己看的时候都懵了,就是存了一下自己的程序,然后这个阅读,是真的出乎我的意料。我完全没…

掌握接口自动化测试,看这篇文章就够了,真滴简单

前言: 接口测试在我们测试工作当中,经常会遇到,对于接口自动化操作,也越来越多的公司进行实践起来了,市面上有很多工具可以做接口自动化比如:Postman、JMeter、SoapUI等。这一篇安静主要介绍通过代码的形式…

CCF CSP认证历年题目自练Day46

兄弟们记得去官网报名CSP认证。 题目 试题编号: 201709-3 试题名称: JSON查询 时间限制: 1.0s 内存限制: 256.0MB 问题描述: 问题描述   JSON (JavaScript Object Notation) 是一种轻量级的数据交换格式&#xff…

“大数据分析师”来了,提高职业含金量,欢迎来领

大数据分析师是指在不同行业中,专门从事相关数据的收集、整理、分析,并依据数据通过科学算法模型进行行业研究、评估和预测等工作的专项人才。应用行业涉及互联网信息技术企业、科研院校、金融行业、制造业、物流、生物医疗、农业等大数据相关行业。 常…

IDEA如何打断点调试

目录 1. 设置断点2. 调试3. 调试的基本操作3.1 step over3.2 step into 跟 Force step into3.3 step out3.4 resume program3.5 mute breakpoints3.6 view breakpoints3.6 条件断点 编写代码的时候,有时候我们需要跟踪代码的运行情况,使用断点调试就是一…

基于Vue+SpringBoot的农村物流配送系统 开源项目

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 系统登录、注册界面2.2 系统功能2.2.1 快递信息管理:2.2.2 位置信息管理:2.2.3 配送人员分配:2.2.4 路线规划:2.2.5 个人中心:2.2.6 退换快递处理:…

【Machine Learning in R - Next Generation • mlr3】

本篇主要介绍mlr3包的基本使用。 一个简单的机器学习流程在mlr3中可被分解为以下几个部分: 创建任务 比如回归、分裂、生存分析、降维、密度任务等等挑选学习器(算法/模型) 比如随机森林、决策树、SVM、KNN等等训练和预测 创建任务 本次示…

创信短信API的无代码开发集成:电商平台、CRM和用户运营

无代码开发:集简云与创信短信API的连接 创信短信API的无代码开发集成,旨在为电商平台、CRM和用户运营提供便利。作为一款超级软件连接器,集简云可以在无需开发,无需代码知识的情况下,轻松连接创信短信与近千款软件系统…

软文营销如何正确蹭热点?媒介盒子为您解答

软文营销过程中为什么需要借助热点营销?热点营销的三大优势就是“传播速度快、爆发效果猛、有效时间短”,追热点的最终目的就是为了给产品或品牌带来关注度。 虽然蹭热点很重要,但是也有许多品牌在营销过程中因为没搞清楚状况就翻车&#xf…

Qt 5.15.11 源码windows编译

1.下载qt5.15.11源码 https://download.qt.io/official_releases/qt/5.15/5.15.11/single/qt-everywhere-opensource-src-5.15.11.zip 2.解码源码到桌面 3.安装cmake ,python ,perl, Visual Studio 2019 Strawberry Perl for Windows Win flex-bison download | SourceForge…

如何在Windows 10中进行屏幕截图

本文介绍如何在Windows 10中捕获屏幕截图,包括使用键盘组合、使用Snipping Tool、Snipp&Sketch Tool或Windows游戏栏。 使用打印屏幕在Windows 10中捕获屏幕截图 在Windows 10中捕获屏幕截图的最简单方法是按下键盘上的PrtScWindows键盘组合。你将看到屏幕短暂…

ETL数据转换工具类型与适用场景

ETL数据转换工具在企业数据管理中扮演着重要的角色,能够帮助企业从多个数据源中提取、转换和加载数据,实现数据整合和分析。以下是针对Kettle、DataX和ETLCloud这几个工具的详细介绍及其适用场景。 Kettle(Pentaho Data Integration&#xf…

正则表达式入门教程

一、本文目标 让你明白正则表达式是什么,并对它有一些基本的了解,让你可以在自己的程序或网页里使用它。 二、如何使用本教程 文本格式约定:专业术语 元字符/语法格式 正则表达式 正则表达式中的一部分(用于分析) 对其进行匹配的源字符串 …

C# 使用Microsoft.Office.Interop.Excel库操作Excel

1.在NuGet管理包中搜索:Microsoft.Office.Interop.Excel,如下图红色标记处所示,进行安装 2. 安装完成后,在程序中引入命名空间如下所示: using Microsoft.Office.Interop.Excel; //第一步 添加excel第三方库 usi…

JTS: 24 MinimumDiameter 最小矩形

文章目录 版本代码 版本 org.locationtech.jts:jts-core:1.19.0 链接: github 代码 package pers.stu.algorithm;import org.locationtech.jts.algorithm.MinimumDiameter; import org.locationtech.jts.geom.Coordinate; import org.locationtech.jts.geom.Geometry; import…

口袋参谋:新品增销量,是如何做到无痕迹、不降权的?

​经常听到这样的抱怨:“我补销量的速度,还没别人新品卖的快?一个新链接第二天就上了1w销量?到底是咋做到的?” 其实像新品上来直接就卖爆的情况,在电商行业中也不算什么新鲜事,但是对于很多新手…

SOLIDWORKS 2024新功能之Visualize篇

SOLIDWORKS 2024新功能Visualize 增强了创建引人注目的外观的功能 SOLIDWORKS Visualize 使用 Dassault Systmes 的企业 PBR 着色模型 (DSPBR) 来准确复制金属、玻璃、塑料和其他曲面的逼真外观。 DSPBR 是材料模型,用于基于物理的渲染,受 3DEXPERIENCE…

Java追加式将内容写入yml文件

前言 最近需要使用java的jackson-dataformat-yaml写yml文件,但多数情况是在现有的文件内容中追加地写一部分新的内容。网上查了一下没有查到有直接追加的api,看源码偶然间找到了一个实现思路,记录一下。 追加写入到yml文件 使用的工具是jac…

python 实验7

姓名:轨迹 学号:6666 专业年级:2021级软件工程 班级: 66 实验的准备阶段 (指导教师填写) 课程名称 Python开发与应用 实验名称 文件异常应用 实验目的 (1)掌握基本文件读写的方式; …