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

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

前言

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

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

数据结构之队列

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

故队列基本操作如下:

(1)创建队列

(2)入队

(3)出队

(4)判断队列是否为NULL

(5)获取队头元素

数据结构之队列分类

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

(1)原生数组队列

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

(3)链式结构描述

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

优先队列

原生数组描述队列

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

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

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

动态数组描述队列

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

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

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

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

具体代码

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

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

2.入队操作

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

具体实现代码:

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

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

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

具体实现代码:

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

4.判断栈是否为空

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

具体实现代码:

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

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

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


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

链式队列

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

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

具体实现源码献上

#include 

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

#include 

希望对大家有帮助!

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

C语言C++编程学习:

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

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

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

编程学习软件分享:

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

编程学习视频分享:

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

你可能感兴趣的:(c++,优先队列,c++,队列,c++优先队列,c++数据结构,c判断char数组是否为空,c判断数组是否为空)