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

阅读以下说明和C函数,填补函数代码中的空缺(1)~(5),将解答填入答题纸的对应栏内。
【说明】
    队列是一种常用的数据结构,其特点是先入先出,即元素的插入在表头、删除在表尾进行。下面采用顺序存储方式实现队列,即利用一组地址连续的存储单元存放队列元素,同时通过模运算将存储空间看作一个环状结构(称为循环队列)。
    设循环队列的存储空间容量为MAXQSIZE,并在其类型定义中设置base、rear和length三个域变量,其中,base为队列空间的首地址,rear为队尾元素的指针,length表示队列的长度。
#define MAXQSIZE 100
typedef struct  {
    QElemType *base;             /* 循环队列的存储空间首地址 */
    int        rear;             /* 队尾元素索引 */
    int        length;           /* 队列的长度 */
} SqQueue;
    例如,容量为8的循环队列如图3-1所示,初始时创建的空队列如图3-1(a)所示,经过一系列的入队、出队操作后,队列的状态如图3-1(b)所示(队列长度为3)。

  
图3-1
下面的C函数1、C函数2和C函数3用于实现队列的创建、插入和删除操作,请完善这些代码。
【C函数1】创建一个空的循环队列。
int  InitQueue(SqQueue *Q)
/* 创建容量为MAXQSIZE的空队列,若成功则返回1;否则返回0 */
{     Q->base=(QElemType *) malloc ( MAXQSIZE* (1) );
    if (!Q->base) return 0;
Q->length=0;
Q->rear=0;
    return 1;
} /* InitQueue */
【C函数2】元素插入循环队列。
int EnQueue(SqQueue *Q, QElemType e)  /* 元素e入队,若成功则返回1;否则返回0 */
{   if(Q->length>=MAXQSIZE)  return 0;
    Q->rear= (2) ;
    Q->base[Q->rear]=e;
     (3) ;
    return  1;
} /* EnQueue */
【C函数3】元素出循环队列。
int DeQueue (SqQueue *Q, QElemType  *e)
/* 若队列不空,则删除队头元素,由参数e带回其值并返回1;否则返回0 */
{   if ( (4) ) return 0;
    *e=Q->base[(Q->rear - Q->length+1+MAXQSIZE) %MAXQSIZE];
     (5) ;
    return 1;
} /* DeQueue */


相关试题

推荐文章
合作网站内容