循环队列的基本操作
Posted suqf
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了循环队列的基本操作相关的知识,希望对你有一定的参考价值。
1 //循环队列基本操作 2 #define MAXSIZE 100 3 Typedef struct{ 4 QElemType *base; 5 int front; 6 int rear; 7 }SqQueue; 8 9 //队列的初始化 10 Status InitQueue(SqQueue &Q){ 11 Q.base=(QElemType *)malloc(MAXSIZE*sizeof(QElemType)); 12 if(!Q.base) exit(OVERFLOW); 13 Q.front=Q.rear; 14 return OK; 15 } 16 //求队列的长度 17 int QueueLength(SqQueue Q){ 18 return (Q.rear-Q.front+MAXSIZE)%MAXSIZE; 19 } 20 //循环队列入队 21 Status EnQueue(SqQueue &Q,QElemType e){ 22 if((Q.rear+1)%MAXSIZE==Q.front) return ERROR; //队满 23 Q.base[Q.rear]=e; //新元素入队尾 24 Q.rear=(Q.rear+1)%MAXSIZE; //队尾指针+1 25 return OK; 26 } 27 //循环队列出队 28 Status DeQueue(SqQueue &Q,QElemType &e){ 29 if(Q.front==Q.rear) return ERROR; //队空 30 e=Q.base[Q.front]; //保存队头元素 31 Q.front=(Q.front+1)%MAXSIZE; //队头指针+1 32 return OK; 33 } 34 //取队头元素 35 SElemType GetHead(SqQueue Q){ 36 if(Q.front!=Q.rear) //队列不为空 37 return Q.base[Q.front]; //返回队头指针元素的值,队头指针不变 38 }
以上是关于循环队列的基本操作的主要内容,如果未能解决你的问题,请参考以下文章