软题库 移动APP 扫码下载APP 随时随地移动学习 培训课程
当前位置:信管网 >> 在线考试中心 >> 信息系统项目管理师题库 >> 试题查看
试卷名称 2017年上半年程序员考试下午真题试题(案例分析)
考试中心《2017年上半年程序员考试下午真题试题(案例分析)》在线考试
试卷年份2017年上半年
试题题型【分析简答题】
试题内容

阅读以下说明和 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;



相关试题

推荐文章
合作网站内容