当前位置:首页计算机类软件水平考试初级程序员->试题四(共15分)阅读以下说明和C函数,填补函数中空缺,将解

试题四(共 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;();﹜elseP->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;﹜

答案:
本题解析:

(1)Q→rear→next=p(2)Q→rear=p(3)Q→rear→next(4)p→next(5)Q→rear==p 或 Q→rear→next==p→next 或 Q→size==1

【解析】

本题考察C语言指针与链表知识,为入队列和删除队列问题。对于入队列,那么当队列Q不为空时,P队尾t要指向原Q队尾指向元素,即:P->next=Q->rear->next,Q队尾要指向p,即:Q→rear→next=p。当队列Q为空时,插入p元素,则p队尾指向p自身,即:p→next=p,且整个队列Q队尾也是p,即:Q→rear=p。对于队列删除元素p,先判断Q是否为空,为空队列则返回 ERROR;If(0==q->size) //是空队列Return ERROR;另p指向队头元素结点,队头元素结点可用Q→rear→next表示。此时,p转化为头结点,p出列,则需要Q队尾指向p下一个元素,因此第4空填:p→next。最后,判断被删除队头结点是否是队列中唯一结点,可采用:Q→rear==p 或 Q→rear→next==p→next 或 Q→size==1 等表示方法。

更新时间:2022-08-09 20:15
纠错

你可能感兴趣的试题

单选题

高级系统分析师,专项练习,软件水平考试《高级系统分析师》押题

  • A.V(S2)和P(S4)
  • B.P(S2)和V(S4)
  • C.P(S2)和P(S4)
  • D.V(S2)和V(S4)
查看答案
单选题

高级系统分析师,专项练习,软件水平考试《高级系统分析师》押题

  • A.V(S1)P(S2)和V(S3)
  • B.P(S1)V(S2)和V(S3)
  • C.V(S1)V(S2)和V(S3)
  • D.P(S1)P(S2)和V(S3)
查看答案
单选题

高级系统分析师,专项练习,软件水平考试《高级系统分析师》押题

  • A.P(S4)和V(S4)V(S5)
  • B.V(S5)和P(S4)P(S5)
  • C.V(S3)和V(S4)V(S5)
  • D.P(S3)和P(S4)V(P5)
查看答案
单选题

高级系统分析师,专项练习,软件水平考试《高级系统分析师》押题

  • A.P(S3)和V(S4)V(S5)
  • B.V(S3)和P(S4)P(S5)
  • C.P(S3)和P(S4)P(S5)
  • D.V(S3)和V(S4)V(S5)
查看答案
单选题

高级系统分析师,专项练习,软件水平考试《高级系统分析师》押题

  • A.P(S2)和P(S4)
  • B.P(S2)和V(S4)
  • C.V(S2)和P(S4)
  • D.V(S2)和V(S4)
查看答案
单选题

高级系统分析师,专项练习,软件水平考试《高级系统分析师》押题

  • A.V(S1)、P(S1)和V(S2)V(S3)
  • B.P(S1)、V (S1)和V(S2)V(S3)
  • C.V(S1)、V(S2)和P(S1)V(S3)
  • D.P(S1)、V(S2)和V(S1)V(S3)
查看答案
单选题

高级系统分析师,专项练习,软件水平考试《高级系统分析师》押题

  • A.序列图
  • B.状态图
  • C.通信图
  • D.活动图
查看答案
单选题

高级系统分析师,专项练习,软件水平考试《高级系统分析师》押题

  • A.合并分叉
  • B.分支
  • C.合并汇合
  • D.流
查看答案
单选题

高级系统分析师,专项练习,软件水平考试《高级系统分析师》押题

  • A.产甲2套,乙3套
  • B.生产甲1套,乙4套
  • C.生产甲3套,乙4套
  • D.生产甲4套,乙2套
查看答案
单选题

高级系统分析师,专项练习,软件水平考试《高级系统分析师》押题

  • A.见图A
  • B.见图B
  • C.见图C
  • D.见图D
查看答案