数据结构:队列

目录

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

复制代码
 

①数据类型定义


②创建一个空队列

③入队

④出队


⑤判空

⑦销毁

相关推荐
叼烟扛炮1 小时前
Linux 学习笔记(四十三):网络编程进阶——自定义协议解决 TCP 粘包与守护进程
linux·开发语言·网络·笔记·tcp/ip
LMT流氓兔2 小时前
第五单元——第十六课:给书店助手加上网页界面
java·开发语言·jvm·人工智能·oracle·langchain·1024程序员节
专注仿真2 小时前
梯度提升类(XFBoost)算法详解与代码实例
开发语言·人工智能·python·算法·大模型训练·控制算法
外收内放2 小时前
Python基础语法练习题(75)
开发语言·python·学习
starzy19903 小时前
Scala循环与判断:一切皆表达式的控制流
开发语言·人工智能·scala
starzy19903 小时前
Scala类和对象:从构造器到样例类的完整指南
开发语言·后端·scala
niucloud-admin4 小时前
NIUCLOUD PHP SAAS上门家政使用文档--服务订单:订单列表
开发语言·php
A boy CDEF girl4 小时前
算法题专栏:优选算法
数据结构·算法·leetcode
怪我冷i4 小时前
Rust 的impl语法详解
开发语言·后端·rust
wuminyu4 小时前
Java字节码学习总结:字节码如何加载、解析和执行
java·linux·c语言·jvm·c++