目录
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);
①数据类型定义
②创建一个空队列③入队
④出队
⑤判空
⑦销毁














