如何实现循环队列

2020-01-06 13:24:56王旭
  • {   /* TODO (#3#): 销毁队列 */ 
  • free(Q.base);   Q.base=NULL;  
  • Q.front=0;   Q.rear=0;  
  • return OK;   //....................................  
  • }    
  • //将队列Q清为空队列   // 前提:队列Q已存在  
  • Status ClearQueue(SqQueue &Q)   {  
  • /* TODO (#4#): 清空队列 */  Q.base=0;  
  • Q.rear=0;   return OK;  
  • //....................................   }  
  •   //若队列Q为空,则返回TRUE,否则FALSE  
  • // 前提:队列Q已存在   Status QueueEmpty(SqQueue Q)  
  • {   /* TODO (#5#): 判断队列是否为空 */ 
  • if(Q.front==Q.rear)   return OK;  
  • else  return ERROR;  
  • //....................................   }  
  •   //返回队列Q的元素个数,即队列长度  
  • // 前提:队列Q已存在   int QueueLength(SqQueue Q)  
  • {   /* TODO (#6#): 返回队列长度 */ 
  • return (Q.rear-Q.front+MAXQSIZE)%MAXQSIZE;   //....................................  
  • }    
  • //取队列Q头元素用e返回   // 前提:队列Q存在且非空  
  • Status GetHead(SqQueue Q,ElemType &e)   {  
  • /* TODO (#7#): 取队头元素存入e */  if(Q.rear==Q.front)  
  • return ERROR;   e=Q.base[Q.front];  
  • //e=*(Q.base+Q.front);   return OK;//返回操作状态(成功:OK,失败:ERROR)  
  • //....................................   }  
  •   //插入元素e作为队列Q的新的队尾元素  
  • // 前提:队列Q存在且未满   Status EnQueue(SqQueue &Q, ElemType e)  
  • {   /* TODO (#8#): 元素e入队列 */ 
  • if((Q.rear+1)%MAXQSIZE==Q.front)   return ERROR;