【数据结构第二周】队列知识点整理
队列(Queue):具有一定操作约束的线性表
插入和删除操作:只能在一端插入,而在另一端删除
先进先出
1、队列的顺序存储实现
队列的顺序存储结构通常由一个一维数组和一个记录队列头元素位置的变量front以及
一个记录队列尾元素位置的变量rear组成
(1)初始化
1 2 3 4 5 6 | #define MaxSize <储存数据元素的最大个数> typedef struct { ElementType Data[ MaxSize ]; int rear; int front; } Queue; |
(2)入队列
1 2 3 4 5 6 7 8 9 10 | void AddQ( Queue *PtrQ, ElementType item) { if ( (PtrQ->rear+1) % MaxSize == PtrQ->front ) { printf (“队列满”); return ; } PtrQ->rear = (PtrQ->rear+1)% MaxSize; PtrQ->Data[PtrQ->rear] = item; } |
Front和rear指针的移动采用”加一取余“法,体现了顺序存储的”循环使用“。
(3)出队列
1 2 3 4 5 6 7 8 9 10 11 12 | ElementType DeleteQ ( Queue *PtrQ ) { if ( PtrQ->front == PtrQ->rear ) { printf (“队列空”); return ERROR; } else { PtrQ->front = (PtrQ->front+1)% MaxSize; return PtrQ->Data[PtrQ->front]; } } |
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步