数据结构:队列

目录

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

复制代码
 

①数据类型定义


②创建一个空队列

③入队

④出队


⑤判空

⑦销毁

相关推荐
wuyk55513 小时前
第2章:六步换相原理全解+STM32工程实战
c语言·开发语言·stm32·单片机·嵌入式硬件
hey_sml14 小时前
JAVA每日一学---CompletableFuture中thenApply与thenCompose区别详解
java·开发语言
Doraemomo14 小时前
数据结构-环形链表
java·数据结构·链表
萧瑟余晖15 小时前
Java深入解析篇十七之SpringCloud
java·开发语言
ttod_qzstudio16 小时前
Java 常用语法极简通关(五):类与对象——字段、方法、构造器、this 与 static
java·开发语言·python
萧瑟余晖17 小时前
Java深入解析篇十七之Spring Security
java·开发语言·spring
爱跳舞的烤冷面17 小时前
自学嵌入式第22天(数据结构——哈希)
数据结构·算法·哈希算法
C++ 老炮儿的技术栈19 小时前
从 Qt Designer 属性编辑器的层级可以看到继承链
c语言·数据库·c++·qt·sqlite·visual studio
MC皮蛋侠客19 小时前
Redis 系列(一):全景与最小闭环——从 `SET` 命令到内存数据结构
数据结构·数据库·redis
疯狂打码的少年19 小时前
【数据结构】队列:定义、顺序队列与链式队列
数据结构·笔记