软题库 移动APP 扫码下载APP 随时随地移动学习 培训课程
当前位置:信管网 >> 在线考试中心 >> 信息系统项目管理师题库 >> 试题查看
试卷年份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;
        (   1   );
     ﹜
     else
        P->next=p;
 
     ﹙  2  ﹚;
     Q->size++;
      return OK;

 
int  DeQueue(Queue*Q,KeyType*elem)
﹛   //出队列
     QNode*p;
     If(0==q->size)           //是空队列
         Return ERROR;
     P=(  3  );                    //令p指向队头元素结点
     *elem =p->data;
     q->rear->next=(  4   );         //将队列元素结点从链表中去除
     if((  5  ))                //被删除的队头结点是队列中唯一结点
        q->rear=NULL;       //变成空队列
     free(p);
     q->size--;
     return OK;
 ﹜


相关试题

推荐文章
合作网站内容