刷题刷出新高度,偷偷领先!偷偷领先!偷偷领先! 关注我们,悄悄成为最优秀的自己!

简答题

阅读以下说明和C函数,填补函数代码中的空缺,将解答填入答题纸的对应栏内。
[说明]
队列是一种常用的数据结构,其特点是先入先出,即元素的插入在表头、删除在表尾进行。下面采用顺序存储方式实现队列,即利用一组地址连续的存储单元存放队列元素,同时通过模运算将存储空间看作一个环状结构(称为循环队列)。
设循环队列的存储空间容量为MAXQSIZE,并在其类型定义中设置base、rear和length三个域变量,其中,base为队列空间的首地址,rear为队尾元素的指针,length表示队列的长度。

#define  MAXQSIZE  100

    typedef
 struct    {

    QElemType *base;
   /*循环队列的存储空间首地址*/

    int  
 rear;    /*队尾元素索引*/

    int length;  
 /*队列的长度*/

    }SqQueue;
例如,容量为8的循环队列如下图所示,初始时创建的空队列如下图(a)所示,经过一系列的入队、出队操作后,队列的状态如下图(b)所示(队列长度为3)。

下面的C函数1、C函数2和c函数3用于实现队列的创建、插入和删除操作,请完善这些代码。
[C函数1]创建一个空的循环队列。
[C函数1]创建一个空的循环队列。

    int
InitQueue(SqQueue *Q)

    /*创建容量为MAXQSIZE的空队列,若成功则返回1;否则返回0*/

    {  Q->base=(QElemType *)malloc(MAXQSIZE* ______};

    if (!Q->baSe)return 0;

    Q->length=0;

    Q->rear=0;

    return 1;

    }/*InitQueue*/

    [<strong>[C函数2]</strong>]元素插入循环队列。

    int
EnQueue(SqQueue *Q,QElemType e)  /*元素e入队,若成功则返回1;否则返回0*/

    {  
 if(Q->length>=MAXQSIZE.return 0;

    Q->rear= ______;

    Q->base[Q->rear]=e;

    ______;

    return 1;

    }/*EnQueue*/

    [C函数3]元素出循环队列。

    int
DeQueue(SqQueue *Q,QElemType *e)

    /*若队列不空,则删除队头元素,由参数e带回其值并返回1;否则返回0*/

    {
 if(______)return 0;

    *e=Q->base[(Q->rear-Q->length+1+MAXQSIZE.%MAXQSIZE.;

    ______;

    return 1;

    }/*DeQueue*/

使用微信搜索喵呜刷题,轻松应对考试!

答案:

sizeof(QElemType)
(e->rear+1)%MAXQSIZE或等价表示
Q->length++    或Q->length=Q->length+1或等价表示
Q->length<=0    或Q->length==0或等价表示
e->length--    或Q->length=Q->length-1或等价表示

解析:

对于C函数1,创建一个空的循环队列。首先,需要为队列的存储空间分配内存,大小是队列元素的类型大小乘以最大队列大小,即sizeof(QElemType) * MAXQSIZE。然后初始化队列长度和队尾指针。在分配内存时需要注意检查是否成功分配了内存,如果没有成功则返回0。所以空处填入sizeof(QElemType)。入队操作时,需要将元素添加到队尾,并更新队尾指针和队列长度。队尾指针通过(Q->rear + 1) % MAXQSIZE进行更新以形成循环队列的效果,并增加队列长度。因此空处填入(Q->rear + 1) % MAXQSIZEQ->length++或等价表示。

创作类型:
原创

本文链接:阅读以下说明和C函数,填补函数代码中的空缺,将解答填入答题纸的对应栏内。[说明]队列是一种常用的数据

版权声明:本站点所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明文章出处。

让学习像火箭一样快速,微信扫码,获取考试解析、体验刷题服务,开启你的学习加速器!

分享考题
share