问答题

[说明] 循环队列的类型定义如下(其中队列元素的数据类型为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->da......

(↓↓↓ 点击下方‘点击查看答案’看完整答案 ↓↓↓)