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,一经查实,立即删除!

相关文章

bit-map再显身手:test.txt中有42亿个无符号整数, 求不存在于test.txt中的最小无符号整数。限制: 可用内存为600MB....

先看看这个题目:test.txt中有42亿个无符号整数, 求不存在于test.txt中的最小无符号整数. 限制: 可用内存为600MB. 又是大数据。 看到42亿, 有灵感没? 要知道, 2的32次方就是42亿多一点点啊。42亿个无符号…

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

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

BZOJ1734: [Usaco2005 Feb]Aggressive cows 愤怒的牛

【传送门:BZOJ1734】 简要题意: 约翰有N 间牛棚,这些牛棚坐落在一条直线上,第i 间牛棚位于坐标Xi 的位置。他要把C 头 奶牛安排在这些牛棚里。每间牛棚最多可以放一头奶牛,也可以空着。这些奶牛的脾气都很暴燥&#xf…

CSS基础范例

1 <!DOCTYPE html>2 <html lang"en">3 <head>4 <meta charset"UTF-8">5 <title>Title</title>6 <style>7 *{8 margin: 0; /*重置*/9 padding: 0…

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

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

什么是PermGen泄漏?

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

html浮动炫酷样式,jQuery和CSS3炫酷表单浮动标签特效

这是一款炫酷的jQuery和CSS3表单浮动标签特效。浮动标签是指输入框中的文字或占位文本在输入框聚焦的时候&#xff0c;以动画的方式浮动到指定的地方。浮动标签特效是一种新颖时尚的动画特效&#xff0c;不仅效果很酷&#xff0c;而且能以明确的方式提示用户该输入框应该填写上…

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

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

python作业:高级FTP程序

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

webpack学习笔记 (一)

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

将涡轮增压器添加到JEE Apps

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

python package_python之package定义

一.简单说明 python是通过module组织代码的&#xff0c;每一个module就是一个python文件&#xff0c;但是modules是通过package来组织的。我们平时在简单测试的时候 一般就是几个Python文件存放在同级的目录下&#xff0c;但是当我们开始尝试开发更为复杂的项目时&#xff0c;p…

html 手机端无法拖动地图,关于腾讯地图api的禁止地图拖动问题

禁用滚动和拖动*{margin:0px;padding:0px;}body, button, input, select, textarea {font: 12px/16px Verdana, Helvetica, Arial, sans-serif;}p{width:603px;padding-top:3px;overflow:hidden;}.btn{width:142px;}#container{min-width:600px;min-height:767px;}//初始化函数…

《一起》个人进展——Day07

昨天做了些什么:实现登录界面的美化 今天的计划:还是准备进行与其他界面的融合 遇到的困难:代码了解不够&#xff0c;融合起来会出现bug转载于:https://www.cnblogs.com/gxt-/p/6828131.html

epoll nio区别_【总结】两种 NIO 实现:Selector 与 Epoll

我想用这个话题小结下最近这一阶段的各种测试和开发。其实文章的内容主要还是想总结一下NIO Socket&#xff0c;以及两种不同操作系统实现NIO的方式&#xff0c;selector和epoll。问题应该从服务器端开始说起。我们都写过net包下的socket&#xff0c;用socket的accept方法来等待…

MapReduce的工作原理

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

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

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

Google Guava MultiMaps

番石榴 这是系列文章中的第一篇&#xff0c;我将尝试解释和探索Google很棒的Guava java库 。 我在搜索Apache Commons Collections的通用版本时遇到了番石榴&#xff08;Guava&#xff09;–我需要一个Bimap并且厌倦了必须使用强制类型转换来填充我的代码–但是我发现要好得多…

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

&#xfeff;我的群组&#xff0d;普通群组$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数控系统&#xff0c;调试PLC过程中遇到网络通信怪异问题(不能直连非要加个路由器)&#xff0c;笔记本电脑的以太网网络直接连接显示网络电缆被拔出&#xff0c;如下图所示&#xff1a;奇怪&#xff0c;怎么出现这种情况了呢&#xff0c;因为我用这台电脑调试过别的P…