【正确答案】循环队列满的条件是:quelen==m。
(1)数据结构
struct Queue{
DataType sequ[m];
int rear,quelen;
};
typedef struct Queue*PQueue;
(2)思路
入队列和出队列的算法和普通队列的思路近似,只是原来用两指针指向之差来表示队列中元素的个数,现在直接用quelen来表示。
(3)算法
PQueue createEmptyQueue(){ /*创建空队列*/
PQueue pqu=(PQueue)malloc(sizeof(struct Queue));
pqu->rear=0;
pqu->quelen=0; /*初始化*/
}
void enQueue(PQueue pqu,DataType x){ /*入队列*/
if(pqu->quelen==m){
printf("Overflow!in");
return;
}
pqu->sequ[pqu->rear]=x;
pqu->rear=(pqu->rear+1)/%m;
pqueue->quelen++;
}
DataType deQueue(PQueue pqu){
/*对非空队列,求队列的头元素,并出队列*/
int front=(pqu->rear-pqu->quelen)/%M;
pqu->quelen--;
return pqu->sequ[front];
}
(4)代价分析
上述几个算法都不包含循环,只有常数条语句,因此每个算法的时间代价均为O(1)。
【答案解析】