赞
踩
队列的顺序存储实现
- //队列的顺序存储实现
-
- #define MaxSize<储存数据元素的最大个数>
- struct QNode{
- ElementType Data[MaxSize];//一维数组
- int rear;//记录队列尾元素位置的变量
- int front;//记录队列头元素位置的变量
- };
- typedef struct QNode *Queue;
-
-
- //循环队列:front=rear为什么无法判别队列是空还是满?
- //front与rear差距有6种情况0~5 n种
- //队列装载元素个数情况有7种0~6 n+1种
- //用n种状态来区分n+1种情况
- //解决方案:
- //(1)使用额外标记:Size或者tag域,Size记录元素个数,加入元素时Size+1,删除时Size-1
- //标记元素tag 0~1,插入元素时tag置1,删除元素时tag置0,查看tag值可知最后一次操作
- //(2)仅使用n-1个数组空间
-
- //1.入队列
- void AddQ(Queue PtrQ,ElementType item)
- {
- if((PtrQ->rear+1)%MaxSize==PtrQ->front){
- printf("队列满");//循环队列,5的下一位为0,使用求余函数
- return;
- }
- PtrQ->rear=(PtrQ->rear+1)%MaxSize;
- PtrQ->Data[PtrQ->rear]=item;//将item放入
- }
-
- //2.出队列
- ElementType DeleteQ(Queue PtrQ)
- {
- if(PtrQ->fron
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。