阅读下列函数说明和C函数,将应填入(n)处的字句写在对应栏内。 [说明] 循环队列的类型定义如下(其中队列元素的数据类型为datatype): typedef struct{ datatype data[MAXSIZE]; /*数据的存储

admin2012-12-10  26

问题 阅读下列函数说明和C函数,将应填入(n)处的字句写在对应栏内。
[说明]
   循环队列的类型定义如下(其中队列元素的数据类型为datatype):
typedef struct{
    datatype data[MAXSIZE];   /*数据的存储区*/
    int front,rear;      /*队首、队尾指针*/
    int num;             /*队列中元素的个数*/
}c _ SeQueue;              /*循环队*/
   下面函数及其功能说明如下:
   (1) c_SeQueue* Init_SeQueue():新建队列;
   (2) int ln_SeQueue( c_SeQueue *q, datatype x):将元素x插入队列q,若成功返回1否则返回0;
   (3) int Out_SeQueue (c_SeQueue *q, datatype *x):取出队列q队首位置的元素,若成功返回1否则返回0。
[函数]
c_SeQueue* Init_SeQueue()
{  q=malloc(sizeof(c_SeQueue));
   q->front=q->rear=MAXSIZE-1;
     (1);
   return q;
}
int In_SeQueue( c_SeQueue *q, datatype x)
{  if(q->num= =MAXSIZE) return 0;    /*队满不能入队*/
   else {
        q->rear=(2);
        q->data[q->rear]=x;
         (3);
        return 1;    /*入队完成*/
   }
}
int Out_SeQueue( c_SeQueue *q, datatype *x)
{   if (q->num= =0) return 0;    /*队空不能出队*/
    else{
         *x=(4);    /*读出队首元素*/
      q->front=(5);
      q->num- -;
      return 1;     /*出队完成*/
   }
}

选项

答案(1) q->num=0 (2) (q->rear+1) % MAXSIZE (3) q->num++ (4) q->data[q->front] (5) (q->front+1)%MAXSIZE

解析 (1)新建的队列中元素个数应为0;
(2)向循环队列中添加新元素后,队尾指针应向后移动一位;
(3)向循环队列中添加新元素后,队列中元素个数应增1;
(4)取出队首位置的元素;
(5)从循环队列中取出一个元素后,队首指针应向后移动一位。
转载请注明原文地址:https://kaotiyun.com/show/CnjZ777K
0

最新回复(0)