(3)循環隊列采用不損失一個空間,通過設置標志域的方法,實現循環隊列的的初始化、入隊怎么編?
typedef ?struct ?squeue
{ ? ElemType ? data[QueueSize] ;
? ? int ?front ;
? ? int ?rear ;
? ? int flag;}SqQueue;
void initqueue(squeue*&qu)
{
qu=(squeu*)malloc(sizeof(squeue));
qu->rear=qu->front=qu->flag=0;
}int enqueue(squeue*sq,ElemType x){
if(sq->rear==sq->front&&sq->flag>0)
return 0;
sq->data[sq->rear]=x;
sq->rear=(sq->rear+1)%QueueSize;
sq-flag++;
return 1;
}
int outqueue(squeue*sq,ElemType &x){
if(sq->flag==0)
return 0;
x=sq->data[sq->front];
sq->front=(sq->front+1)%QueueSize;
sq->flag--;
return 1;}
int gethead(squeue *sq,ElemType &x){
if(sq->rear==sq->front)
return 0;
x=sq->data[ (sq->front)%QueueSize];
return 1;}
int emptyp(squeue *sq)
{
if(sq->flag==0)
return 1;
else
return 0;}