1. 程式人生 > >循環隊列的基本操作

循環隊列的基本操作

init sel ret maxsize span spa return thead nbsp

 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 }

循環隊列的基本操作