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

程序员 责任编辑:小布丁 2017-05-25

添加老师微信

备考咨询

加我微信

摘要:希赛网为大家整理了2017上半年程序员考试案例分析真题,以下为第四部分。试题四(共15分)阅读以下说明和C函数,填补函数中的空缺,将解答填入答题纸的对应栏内。【说明】

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


       试题四(共15分)

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

       【说明】

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

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

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

       4.png

       图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上半年程序员考试案例分析真题(汇总)
>>>>进入估分:2017上半年软考分数早知道,在线估分+真题解析
>>>>点击查看:2017上半年程序员上午真题答案和解析


更多资料
更多课程
更多真题
温馨提示:因考试政策、内容不断变化与调整,本网站提供的以上信息仅供参考,如有异议,请考生以权威部门公布的内容为准!

软考备考资料免费领取

去领取