2017上半年程序员考试案例分析真题(4)

    作者:课课家教育更新于: 2018-05-13 21:38:25

    软考,您想通过吗?一次通过才是硬道理

           课课家小编为大家整理了2017上半年程序员考试案例分析真题,以下为第四部分。

     

           试题四(共15分)

           阅读以下说明和C函数,填补函数中的空缺,将解答填入答题纸的对应栏内。

           【说明】

           简单队列是符合先进先出规则的数据结构,下面用不含有头结点的单向循环链表表示简单队列。

           函数enqueue(queue*q,KeyType new_elem)的功能是将元素new_elem加入队尾。

           函数Dnqueue(queue*q,KeyType*elem)的功能使将非空队列的队头元素出队(从队列中删除),并通过参数带回刚出队的元素。用单向循环链表表示的队列如图4-1所示。

           

           图4-1单向循环链表表示的队列示意图

     

           队列及链表结点等相关类型定义如下:

           enum{errOr,OK};

           typedef int KeyType;

           typedef struct qNode﹛

           KeyType data;

           Struct qNode*next;

           ﹜qNode,*Linkqueue;

           Typedef struct﹛

           int size;

           Link:queue rear;

           }queue;

           【C函数】

           int enqueue(queue*q,KeyType new_elem)

           ﹛//元素new_elem入队列

           qNode*p;

           P=(qNode*)malloc(sizeof(qNode));

           if(!p)

           return errOr;

           P->data=new_elem;

           if(q->rear)﹛

           P->next=q->rear->next;

           ();

           ﹜

           else

           P->next=p;

           ﹙﹚;

           q->size++;

           return OK;

           ﹜

           int Dequeue(queue*q,KeyType*elem)

           ﹛//出队列

           qNode*p;

           if(0==q->size)//是空队列

           return errOr;

           P=();//令p指向队头元素结点

           *elem=p->data;

           q->rear->next=();//将队列元素结点从链表中去除

           if(())//被删除的队头结点是队列中唯一结点

           q->rear=NULL//变成空队列

           free(p);

           q->size--;

           return OK;

           ﹜

          >>>>返回目录:2017上半年程序员考试案例分析真题(汇总)

           想要报考2018年软考的朋友现在就可以开始备考了,可以报名课课家软考学院,课课家软考学院含有软考各科目赠送考试:辅导教材、历年真题、考前冲剌资料、在线模拟测试题库,还有老师专属答疑指导等,帮助大家顺利通过考试。

     >>>>>>点击进入软考报名专题

课课家教育

未登录