数据结构:队列
本文介绍了队列的基本概念及其两种实现方式。队列是一种先进先出(FIFO)的线性数据结构,与栈(LIFO)形成对比,二者都是操作受限的表结构。队列分为顺序循环队列和链式循环队列两种类型,文中详细阐述了它们的基本操作:创建空队列、入队、出队、读取队头元素、判空/判满以及销毁队列。在顺序循环队列中,通过数组实现并采用循环方式解决空间浪费问题;链式循环队列则通过链表节点实现。两种实现方式各具特点,顺序队列
目录
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);
①数据类型定义
②创建一个空队列
③入队
④出队
⑤判空
⑦销毁
魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐


















所有评论(0)