c++ 优先队列_C/C++数据结构:队列结构最全解析!带你零基础入门队列结构

69eebc46bda701c715c10d90881771af.png

前言

上一章节针对于C语言栈结构做了解析,不清楚的可以回顾一下。

本章节主要针对于C语言的基础数据结构队列做以解析。

数据结构之队列

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

故队列基本操作如下:

(1)创建队列

(2)入队

(3)出队

(4)判断队列是否为NULL

(5)获取队头元素

数据结构之队列分类

根据队列实现方式与出队方式,我们可以把栈分为以下三种描述方式:

(1)原生数组队列

(2)动态申请内存的数组描述(普通队列和循环队列)

(3)链式结构描述

1f3ac8a6554d7d55c9573ef683c8bc0b.png

优先队列

原生数组描述队列

数组描述栈,只不过多了先进先出的限制而已,它是静态分配的,即使用前,它的内存就已经以数组的形式分配好了,所以在使用时,需要注意队头队尾的标记。

原生数组描述队列实现试题案例:逆序整数

fbdbd8ed9ef6c3a8c38c39d391a8adb3.png

动态数组描述队列

动态申请内存的数组描述不再采用上述实用性的方法了,而是通过封装相关队列函数去描述这种结构。这是写数据结构的一种大致方法。

1.结构体定义与队列的创建过程:

结构体定义:描述队列的属性:队头标记,队尾标记,队列空间

创建队列其实就是创建结构体变量

具体代码

2a34072aa672dc3db97b298635e59c2a.png

ps:队头和队尾顶标记初始值一般都是-1 ,为了满足队列标记和数组下标一致

2.入队操作

注意: 我们的实现是将最新的元素放在了数组的末尾, 那么数组末尾的元素就是我们的队列队尾元素,故可以使用队尾标记去计算队列中的元素个数。然后每次入队后,队尾标记往后移动。

具体实现代码:

17d96b96182664ced8234634071a1dd1.png

3.出队操作和获取队头元素

注意: 出队操作应该是将队头元素删除,由于数组实现的队列无法删除,故只能把队头标记往队尾移动,简称为一种"伪删除"。

具体实现代码:

02dee7f8df76141026a72812211fb606.png

4.判断栈是否为空

用户判断栈中是否有元素,通过队尾和队头标记去做即可

具体实现代码:

edcf02db4124af5084e7c7151d93d850.png

动态申请内存的数组描述队列测试代码

ad068eadaddfe92e317580693d4df7a7.png


ps:循环队列是通过取余形成的循环,这里不过多介绍,有兴趣的可以看看相关资料。

链式队列

链式队列: 链表的尾插法即可

024db9032a477192cb799c00b93161b5.png

具体实现源码献上

#include 

优先队列:根据优先权去决定你出队的元素,故数据中存在优先权衡量的值,相关实现代码如下:

#include 

希望对大家有帮助!

另外如果你想更好的提升你的编程能力,学好C语言C++编程!弯道超车,快人一步!

C语言C++编程学习:

点击领取C/C++编程学习资料​jq.qq.com

分享(源码、项目实战视频、项目笔记,基础入门教程)

欢迎转行和学习编程的伙伴,利用更多的资料学习成长比自己琢磨更快哦!

编程学习软件分享:

c030381b6cd1165cb0e959a614f0e6e6.png

编程学习视频分享:

702524a07c208bff889bcae6ecbe736f.png

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

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

相关文章

周期均方根和有效值的区别_黑猪肉和白猪肉有啥区别?

为啥散养黑猪肉的价格要比白猪贵很多?这其中的原因不看不知道!市面上的散养黑猪肉通常要比白猪肉贵很多,但是仍有不少人喜欢买黑猪肉回家吃,散养黑猪肉和白猪肉不仅仅是口感上有所差距,其价值差距体现在很多方面,接下来小编就和大…

测试环境搭建流程_前端构建 DevOps 搭建 DevOps 基础平台(中)

前言搭建基础平台搭建上篇的时候的时候,已经介绍过了项目流程设计、数据库搭建、jwt 登录等模块。此篇我们介绍分支管理设计及其他的基础模块。后端模块DevOps - Gitlab Api使用(已完成,点击跳转)DevOps - 搭建 DevOps 基础平台(已完成 50%)基础平台搭建…

什么是PermGen泄漏?

接下来是对Java应用程序中特定类型的内存问题的实用介绍。 即–我们将分析导致java.lang.OutOfMemoryError:PermGen空间的错误 堆栈跟踪中的症状。 首先,我们将介绍理解该主题所需的核心概念,并说明什么是对象,类,类…

rto净化效率计算公式_全面剖析 石油化工行业RTO蓄热式焚烧炉的优势要素

在我国的国民经济发展中,石油化工产业是重要的能源基础工业,但是废气的治理问题一直困扰着许多企业。直到RTO蓄热式焚烧炉的面世,为石油化工行业的废气治理带来了新希望。如今,有机废气治理工作越来越受到广泛重视,传统…

python作业:高级FTP程序

要求: 用户加密认证允许同时多用户登录每个用户有自己的家目录 ,且只能访问自己的家目录对用户进行磁盘配额,每个用户的可用空间不同允许用户在ftp server上随意切换目录允许用户查看当前目录下文件允许上传和下载文件,保证文件一…

webpack学习笔记 (一)

一、安装nodejs; 点击打开nodejs官方站点; 点击下图框住的按钮,下周nodejs安装包; 安装下载好的安装包。 安装完毕之后,在cmd中输入node -v查看是否已经安装成功 如果有版本号显示,则代表安装成功&#xf…

将涡轮增压器添加到JEE Apps

我扮演的关键角色之一是在本地社区中传播Akka。 作为讨论的一部分,人们通常会想到的问题/疑问是Akka如何针对编写良好的Java / JEE应用程序提供更好的可伸缩性和并发性。 由于底层硬件/ JVM保持不变,因此参与者模型如何比传统的JEE应用程序发挥更多的功…

MapReduce的工作原理

一、MapReduce模型框架 MapReduce是一个用于大规模数据处理的分布式计算模型,最初由Google工程师设计并实现的,Google已经将完整的MapReduce论文公开发布了。其中的定义是,MapReduce是一个编程模型,是一个用于处理和生成大规模数据…

react实现多行文本超出加省略号

http://www.css88.com/archives/5206 overflow : hidden; text-overflow: ellipsis; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; 根据该文章方法,放在react项目中发现并不能实现,仔细观察发现原来react解析出来的css样…

qq群 html,我的群组-普通群组.html

我的群组-普通群组$axure.utils.getTransparentGifPath function() { return resources/images/transparent.gif; };$axure.utils.getOtherPath function() { return resources/Other.html; };$axure.utils.getReloadPath function() { return resou…

查看PLC IP 端口_西门子828D数控系统X130接口通讯怪异现象(X130手动设置的 IP)...

西门子828D数控系统,调试PLC过程中遇到网络通信怪异问题(不能直连非要加个路由器),笔记本电脑的以太网网络直接连接显示网络电缆被拔出,如下图所示:奇怪,怎么出现这种情况了呢,因为我用这台电脑调试过别的P…

bzoj1263

贪心 n%31 分出一个4&#xff0c;其余用3&#xff0c;n%32&#xff0c;分出一个2&#xff0c;其余用3&#xff0c;然后高精度就行了 #include<bits/stdc.h> using namespace std; const int N 5005; struct BigInt {int len;int a[N];BigInt() { memset(a, 0, sizeof(a)…

c语言volatile_[技术]为什么单片机C语言编程时某一变量有时乱码

最近一个项目里面&#xff0c;在KEIL中用C语言在单片机里面定义了一个状态机全局变量&#xff0c;这个变量随时会改变&#xff0c;用于切换触摸屏的界面&#xff0c;可是程序运行中出现了一个问题&#xff0c;这个状态机号总是出现了被莫名奇妙改变的问题&#xff0c;导致触屏不…

微型计算机2017年9月上,2017年9月计算机一级考试WPS Office冲刺题

2017年9月计算机一级考试WPS Office冲刺题2017年下半年计算机一级考试将在9月份进行&#xff0c;为了方便考生备考计算机一级考试。下面是小编为大家带来的计算机一级考试WPS Office冲刺题&#xff0c;欢迎阅读。冲刺题一&#xff1a;1、PowerPoint 演示文稿和模板的扩展名是【…

11尺寸长宽 iphone_弱电工程LED显示屏尺寸规格及计算方法

前言&#xff1a;led屏幕在生活中&#xff0c;随处可见&#xff0c;显示屏、广播屏等等&#xff0c;但是led尺寸怎么计算的&#xff0c;你知道吗&#xff1f;今天我们一起了解一下led屏幕尺寸的计算方法。正文&#xff1a;一、点间距的计算1、各单元板常见型号及尺寸LED屏普遍是…

marquee标签的使用

<!DOCTYPE html> <html> <head><meta charset"utf-8" /><title>演示marquee</title><style type"text/css">*{padding: 0px;margin: 0px;}marquee{border: 1px solid purple;}img{width: 360px;height: auto;}&…

32位数据源中没有mysql_[SpringBoot实战]快速配置多数据源(整合MyBatis)

前言由于业务需求&#xff0c;需要同时在SpringBoot中配置两套数据源&#xff08;连接两个数据库&#xff09;&#xff0c;要求能做到service层在调用各数据库表的mapper时能够自动切换数据源&#xff0c;也就是mapper自动访问正确的数据库。本文内容&#xff1a;在SpringbootM…

考研计算机冷门学校,考研5个冷门的985院校 别随大流,这些几所也是很不错的...

导语&#xff1a;想必大家考研的目的有很多&#xff0c;最主要的就是想去更好的学校提升自己&#xff0c;大部分会肯定是会更倾向于985这类的院校&#xff0c;每年其实除了那些被“挤破头”的985院校&#xff0c;其实还有不少“低调”的985院校是非常值得报考的&#xff0c;下面…

名为 cursor_jinserted 的游标不存在_质量工程师必须了解的测量常识,你不知道怎么行...

01测量器具的分类测量器具是一种具有固定形态、用以复现或提供一个或多个已知量值的器具。按用途的不同量具可分为以下几类&#xff1a;1. 单值量具只能体现一个单一量值的量具。可用来校对和调整其它测量器具或作为标准量与被测量直接进行比较&#xff0c;如量块、角度量块等。…

bzoj4869

http://www.lydsy.com/JudgeOnline/problem.php?id4869 终于A了。。。参考了下dalao的代码。。。 拓展欧几里得定理&#xff0c;改了几次就不变了&#xff0c;但是用的时候要在快速幂里判是不是要用。 #include<bits/stdc.h> using namespace std; typedef long long ll…