如果希望循环队列中的向量单元都能得到利用 则可设置一个标志域tag 每当尾指针和头指针值相同时
队列,指针,向量
已帮助 人
如果希望循环队列中的向量单元都能得到利用,则可设置一个标志域tag,每当尾指针和头指针值相同时,以tag的值为O或1来区分队列状态是“空”还是“满”.请对下列函数填空,使其分别实现与此结构相应的入队列和出队列的算法.
intEnQueue(CirQueue*Q,DataType x)
{
if Q->tag==1 return 0;
Q->data[Q->rear]=x;
Q->rear=(Q->rear+1)%MAXQSIZE
if(Q->rear==Q->front)Q->tag=1
return1:
}
intDeQueue(CirQueue*Q,DataType*x)
{
if((1))return0;
*x=Q->data[Q->front];
Q->front= (2) ;
(3) ;
return1;
}
(1)
(2)
(3)
-
正确答案:(1)Q->tag= =0(或者!Q->tag)//如果标志域tag为0,则队空,无法出队,算法结束;
(2)(Q->front+l)% MAXQSIZE//出队,头指针循环加1;
(3)if(Q->rear= =Q->front)Q->tag=0;//出队后,则检查尾指针是否等于头指针,若相等,则队空,置标志域tag为0.
