数据结构:队列

目录

1.队列:

2.队列的实现(以顺序循环队列为例)

3.队列的实现(以链式循环队列为例)


1.队列**:**

1.栈、队列和表的区别:

队列:一种先进先出,后进后出的数据结构

栈:一种先进后出,后进先出的数据结构

栈和队列是一种特殊(操作受限制)的表状结构

栈和队列只能在指定的位置插入和删除

链表可以在任意位置插入和删除

应用:栈对应深度优先;队列对应广度优先

2.队列的相关概念:

队头:出队的一端,可用int型head或者int*型head标识(顺序队列:对头尾指针均只增加不减小。循环队列:一旦头指针增1或尾指针增1 时超出了所分配的队列空间,就让它指向这片连续空间的起始位置。)

队尾:入队的-端

出队:数据从队列中取出

入队:数据向队列中插入

空队列:队列中没有元素的队列(当 head=tail 时,队列中没有任何元素,为空队列)

3.队列的分类

顺序(循环)队列

链式(循环)队列

2.队列的实现(以顺序循环队列为例)

队列的基本运算

①初始化队列(创建空队列):SeqQueue_t *CreateSeqQueue(int len);

②入队操作: int EnterSeqQueue(SeqQueue_t *pTmpQueue, DataType TmpData);

③出队操作:DataType QuitSeqQueue(SeqQueue_t *pTmpQueue);

④读队头元素:DataType FindSeqQueue(SeqQueue_t *pTmpQueue);

⑤判满: int IsFullSeqQueue(SeqQueue_t *pTmpQueue);

判空:int IsEmptySeqQueue(SeqQueue_t *pTmpQueue);

⑥队列的销毁:int DestroySeqQueue(SeqQueue_t **ppTmpQueue);

①数据类型定义

示意图


②创建一个空队列

③入队

④出队

⑤判空

⑥判满

⑦销毁

3.队列的实现(以链式循环队列为例)

队列的基本运算

①初始化队列(创建空队列):Node_t *CreateEmptyLinkQueue(void);

②入队操作: int EnterLinkQueue(Node_t *pTmpQueue, DataType TmpData);

③出队操作:DataType QuitLinkQueue(Node_t *pTmpQueue);

④读队头元素:DataType FindSeqQueue(SeqQueue_t *pTmpQueue);

⑤判队空操作:int IsEmptyLinkQueue(Node_t *pTmpQueue);

⑥队列的销毁:int DestroyLinkQueue(Node_t **ppTmpQueue);

复制代码
 

①数据类型定义


②创建一个空队列

③入队

④出队


⑤判空

⑦销毁

相关推荐
weixin_460443563 小时前
2026年新修订《网络安全法》实施:Java私有化考试系统如何做好SBOM、漏洞治理与安全升级?
java·开发语言·在线考试系统·企业培训考试系统·宏远培训考试系统·国企培训考试系统·国产化培训系统
Cc.Y6 小时前
Java零基础入门:可变字符串与包装类:StringBuilder、StringBuffer 与 通讯录管理系统实战
java·开发语言·python
启观川6 小时前
数据结构与算法 -第 3 章 常用算法-动态规划
数据结构·笔记·python·算法
阿森_dev6 小时前
2027 届毕设选题怎么选:30 个 Java 方向选题的实现难度排序
java·开发语言·spring boot·毕业设计·课程设计
by209996 小时前
C++ 多态:同一个基类接口,调用不同的函数
开发语言·c++·经验分享·多态
笔墨登场说说6 小时前
flink bin/start-cluster.sh 帮我做成开机启动
开发语言·python
Sarvartha6 小时前
Lambda 表达式和函数式接口
java·开发语言
小白学大数据7 小时前
拼多多反爬对抗实战:Scrapy 中间件化采集架构解析
开发语言·scrapy·中间件·架构
学逆向的7 小时前
win32注入代码
开发语言·网络安全·api·win32
wuminyu7 小时前
ForkJoinPool窃取线程在扫描其他WorkQueue时的随机采样算法与Phase线程挂起唤醒机制解析
java·linux·c语言·jvm·c++