循环队列

匿名 (未验证) 提交于 2019-12-03 00:00:02

1 定义:队列的头尾相接的顺序存储结构称为循环列队
2 如何判断队列满?
假设:front和rear只相差一个空格时就是满的情况。
队列最大尺寸为:QueueSize,
队列满的条件:(rear+1)%QueueSize==front
通用队列计算公式:(rear-front+QueueSIize)%QueueSize
循环队列的顺序存储结构

typedef  int QElemType /*循环队列的顺序存储结构*/ typedef struct { 	QElemType data[MAXSIZE]; 	int front; 	int rear; } 

循环队列的初始化代码

/*初始化一个空队列*/ statue InitQueue(SqQueue  *Q) { Q->front=0; Q->rear=0; return OK; }

循环队列求队列长度代码

/*返回	Q的元素个数,也就是队列的当前长度* / int QueueLength(SqQueue Q) { 	return (Q.rear-Q.front+MAXSIZE)%MAXSIZE; }

循环队列的入队操作代码

/*若队列未满,则插入元素e为Q新的队尾元素*/ Status EnQueue(SqQueue *Q,QElemtype e) { 	if((Q->rear+1)%MAXSIZE==Q->front)   /*队列满的判断*/ 		return ERROR; 	Q->data[Q->rear]=e;     /*将元素e赋给队尾*/ 	Q->rear=(Q->rear+1)%MAXSIZE;/*rear指针向后移一个位置*/ 														/*若到最后则转到数组头部*/ 	return OK; }

循环队列的出队列操作代码

/*若队列不空,则删除Q中队头元素,用e返回其值*/ Status DeQueue(SqQueue *Q,QELEMType *e)  { 	if Q->front==Q->rear     /*队列空的判断*/ 		return ERROR; 	*e=Q->data[Q->front];          /*将队头元素赋值给e*/ 	Q->front=(Q->front+1)%MAXSIZE;/*front 指针向后移一位*/ 															/*若到最后则转到数组头部*/  	return OK; 	}
标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!