数据结构:队列

目录

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);

复制代码
 

①数据类型定义


②创建一个空队列

③入队

④出队


⑤判空

⑦销毁

相关推荐
apocelipes1 天前
常用编程语言和库的正则表达式性能对比
c语言·c++·python·性能优化·golang·开发工具和环境
CSharp精选营4 天前
关系型 vs 非关系型:从原理到选型,一文搞定数据库核心分类
数据结构·nosql·关系型数据库·非关系型数据库·技术选型
刘马想放假7 天前
Modbus 全栈技术解析:TCP、RTU、ASCII、RTU over TCP
数据结构·网络协议
北域码匠8 天前
冒泡排序太慢?鸡尾酒排序双向优化,原生 C# 零第三方库完整代码
数据结构·排序算法·泛型·c# 算法·鸡尾酒排序·原生 c# 开发·冒泡排序优化·嵌入式算法
Darling噜啦啦15 天前
列表转树算法深度解析:从 Map 到 Reduce 的两种实现,面试高频考点
数据结构·算法·面试
LDR00616 天前
Type-C 快充全面升级!LDR6601 赋能个人护理便携电机,重塑剃须刀 / 理发器新体验
c语言·开发语言
雪碧聊技术16 天前
Tree.js是什么?一文讲透
开发语言·javascript·ecmascript
码云数智-园园16 天前
C++20 Modules 模块详解
java·开发语言·spring
swordbob16 天前
NIO的channel中什么是 fd(File Descriptor,文件描述符)
java·开发语言·nio
小小工匠16 天前
Redis - 事务机制:能实现 ACID 属性吗
数据结构·redis·性能优化·并发·持久化