更多“若用Q[1]~Q[100]作为循环队列的存储空间,Q[f]、r分别表示队头元素和下一个插入位置,则当f=70,r=20时,队列中共有 个元素。”相关问题
  • 第1题:

    数组Q[n]用来表示一个循环队列,f为当前队列头元素的前一位置,r为队尾元素的位置,假定队列中元素的个数小于n,计算队列中元素的公式为

    A. r-f

    B. (n+f-r)% n

    C. n+r-f

    D. (n+r-f)% n


    正确答案:D

  • 第2题:

    循环队列中,设队列元素依次存放在Q[0..m]中,f、r分别指示队头元素位置和队尾元素的下一个位置,约定存储m个元素时为队满。则队列空的判定方法是(),队列满的判定方法是()。

    A.f==r

    B.(f+1)%(m+1)==r

    C.(r+1)%(m+1)==f

    D.(r+1)% m==f


    参考答案:A,C

  • 第3题:

    循环队列A[0…m-1)存放其元素,用front和Feat分别表示队头和队尾,则循环队列满的条件是(35)。

    A.Q.rear+1==Q.front

    B.Q.rear==Q.front+1

    C.Q.rear==Q.front

    D.(Q.rear+1)%m==Q.front


    正确答案:D
    解析:本题考查队列的基本知识。队列也是一种特殊的线性表,只允许在一端进行插入,另一端进行删除运算。循环队列就是将实现队列的A[M]的第一个元素A[0]与最后一个元素A[M-1]连接起来。在循环队列中用队头和队尾表示队列满的条件是(Q.rear+1)%m==Q.front。

  • 第4题:

    数组Q[0,1,2,…,n]用来表示一个循环队列,f为当前队头元素的前一位置,r为队尾元素的位置,假定队列中元素的总个数小于n,计算队列中元素个数的公式为______。

    A.r-f

    B. n+f-r

    C. n+r-f

    D. (n+r-f)mod n


    正确答案:D
    解析: 参见循环队列的定义和性质。

  • 第5题:

    阅读以下说明和C函数,填补函数代码中的空缺(1)~(5),将解答填入答题纸

    的对应栏内。

    【说明】

    队列是一种常用的数据结构,其特点是先入先出,即元素的插入在表头、删除在表

    尾进行。下面采用顺序存储方式实现队列,即利用一组地址连续的存储单元存放队列元

    素,同时通过模运算将存储空间看作一个环状结构(称为循环队列)。

    设循环队列的存储空间容量为MAXQSIZE,并在其类型定义中设置base、rear和

    lengtb三个域变量,其中’base为队列空间的首地址,rear为队尾元素的指针,length表

    示队列的长度。

    define maxqstze 100

    typedef struct {

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

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

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

    ) SqQueue;

    例如,容量为8的循环队列如图3-1所示,初始时创建的空队列如图3一l(a)所示

    经过一系列的入队、出队操作后,队列的状态如图3-1 (b)所示(队列长度为3)。

    下面的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=O;

    Q-’rear =O:

    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;否则返回O*/

    {1f‘(4),return 0;

    *e =O->base[ (Q=>rear - Q->length+I+MAXQSTZE) %MAXQSIZE]

    (5) ;

    returnl;

    } /*DeQueue*/


    正确答案:
    分析本题考查数据结构实现和C语言基本应用。队列是一种基本的数据结构,其基本操作有初始化、判断是否为空、八队列和出队列等。循环队列是一种采用顺序存储结构实现的队列,其特点是将队列存储空间的首尾单元在逻辑上连接起来,从而得到一个环形结构的队列空间。在循环队列的类型定义SqQueue中,指针成员base存放队列空间的首地址,存储空间应在队列的初始化操作中实现,对应的语句如下:Q->base=(QElemType*)malloc(MAXQSIZE*(1)),由于InitQueue(SqQueue*Q)的形参为指向结构体的指针,因此队列的参数可表示为“Q->base、Q->rear、Q->lengrh”或“(*Q).base、(*Q).rear、(*Q).length”,由于队列元素类型为QElemType、队列容量为MAXQSIZE,因此空(l)处应填入“sizeof(QElemType)”。入队列操作由EnQueue(SqQueue*Q,QElemTypee)实现。由于循环队列空间的容量为MAXQSIZE(也就是队满条件为“Q->length>=MAXQSLZE”),因此元素入队列时,需先判断是否队满,在队列中有空闲单元的情况下才能进行入队列操作。其次需确定新元素在队列空间中的位置,从图3—1(b)中可以看出,Q->rear指出了当前队尾元素,新元素应放入下一个位置,结合队列环形空间的要求,空(2)处应填入“(Q->rear+I)%。MAXQSIZE”或其等价形式。通过“Q->base[Q->rear]=e”将元素加入队列后,队列长度增加了,因此空(3)处应填入“Q->length++”或其等价形式。出队列操作由DeQueue(SqQueue*Q,QElemType*e)实现。元素出队列时,需要判断队列是否为空,显然,队列长度为0就直接表示了队空,因此空(4)处应填入“Q->length=0”或其等价形式,空(5)处应填入“Q->length--”或其等价形式。试题三参考答案(1)sizeoftQElemtype)(2)(Q->rear+1)%MAXQSIZE或等价表示(3)Q->length++或Q->length=Q->length+l或等价表示(4)Q->length=0或Q->length=0或等价表示(5)Q->length-,或Q->length=Q->length-1或等价表示

  • 第6题:

    以数组Q[0…m-1]存放循环队列中的元素,若变量front和qulen分别指示循环队列中队头元素的实际位置和当前队列的长度,则队尾元素的实际位置是()。

    A.front+qulen-1
    B.(front+qulen)modm
    C.(front+qulen-1)modm
    D.front+qulen

    答案:C
    解析:
    循环队列的元素顺序存储在数组Q中,已知循环队列中队头元素的存储位置为front。当前队列的长度为qulen,队尾元素的位置要在front上加上qulen,然后减l(第一个元素存储在front的位置上),对于循环队列求队尾的位置还要对总长度求余,所以队尾元素的实际位置为(front+qulen-1)modm。

  • 第7题:

    设某循环队列Q的定义中有front和rear两个域变量,其中,front指示队头元素的位置,rear指示队尾元素之后的位置,如下图所示。若该队列的容量为M,则其长度为(57)。

    A.(Q.rear-Q.front+1)
    B.(Q.rear-Q.front+M)
    C.(Q.rear-Q.front+1)%M
    D.(Q.rear-Q.front+M)%M

    答案:D
    解析:
    本题考查数据结构基础知识。根据题目中所给的示意图,Q.front为队头元素的指针,Q.rear表示队尾元素之后的一个空位置,故队列长度为Q.rear-Q.front,由于队列中存储位置编号是在0~M-1之间循环的,Q.rear-Q.front的结果有可能是负数,故在Q.rear-Q.front基础上加上M可恢复为正数,而此正数有可能超出0~M-1的范围,故用整除,M取余运算恢复一下,因此长度计算的式子为(Q.rear-Q.front+M)%M。

  • 第8题:

    数组Q[n]用来表示一个循环队列,front为队头元素的前一个位置,rear为队尾元素的位置,计算队列中元素个数的公式为()。


    正确答案:(rear-front+n)%n

  • 第9题:

    设循环队列的元素存放在一维数组Q[0‥30]中,队列非空时,front指示队头元素的前一个位置,rear指示队尾元素。如果队列中元素的个数为11,front的值为25,则rear应指向()元素。

    • A、Q[4]
    • B、Q[5]
    • C、Q[14]
    • D、Q[15]

    正确答案:B

  • 第10题:

    设顺序循环队列Q[0:M-1]的头指针和尾指针分别为F和R,头指针F总是指向队头元素的前一位置,尾指针R总是指向队尾元素的当前位置,则该循环队列中的元素个数为()

    • A、R-F
    • B、F-R
    • C、(R-F+M)%M
    • D、(F-R+M)%M

    正确答案:C

  • 第11题:

    填空题
    一个循环队列Q的存储空间大小为M,其队头和队尾指针分别为front和rear,则循环队列中元素的个数为:()。

    正确答案: (rear-front+M)%M
    解析: 暂无解析

  • 第12题:

    单选题
    设顺序循环队列Q[0:M-1]的头指针和尾指针分别为F和R,头指针F总是指向队头元素的前一位置,尾指针R总是指向队尾元素的当前位置,则该循环队列中的元素个数为()
    A

    R-F

    B

    F-R

    C

    (R-F+M)%M

    D

    (F-R+M)%M


    正确答案: C
    解析: 暂无解析

  • 第13题:

    设循环队列中数组的下标是0~N-1,其队头、队尾指针分别为f和r(f指向队首元素的前一位置,r指向队尾元素),则其元素个数为()。

    A.r-f

    B.r-f-1

    C.(r-f)%N+1

    D.(r-f+N)%N


    参考答案:D

  • 第14题:

    ● 设循环队列Q 的定义中有 rear 和len两个域变量,其中 rear 表示队尾元素的指针,len 表示队列的长度,如下图所示(队列长度为 3,队头元素为 e) 。设队列的存储空间容量为M,则队头元素的指针为 (57) 。

    (57)

    A. (Q.rear+Q.len-1)

    B. (Q.rear+Q.len-1+M)%M

    C. (Q.rear-Q.len+1)

    D. (Q.rear-Q.len+1+M)%M


    正确答案:D

  • 第15题:

    设循环队列Q的定义中有front和size两个域变量,其中front表示队头元素的指针,size表示队列的长度,如下图所示(队列长度为3,队头元素为x,队尾元素为z)。设队列的存储空间容量为M,则队尾元素的指针为 (58)。

    A.(Q.front+Q.size-1)

    B.(Q.front+Q.size-1+M)%M

    C.(Q.front-Q.size)

    D.(Q.front-Q.size+M)%M


    正确答案:B
    本题考查循环队列队尾指针的计算方法。从图示可以看出,要得到z的值可进行Q.front+Q.size-1操作,但在此不容忽视的一个问题是,循环队列在进行了多次入队出队操作之后,Q.front+Q.size-1有可能大于M,如Q.front指向M-1空间时,Q.front+Q.size-1=M+1,这已超出队列长度,所以需要让其与M进行求模操作,修正位置号。

  • 第16题:

    数组Q[0...n-1]作为一个环形队列,f为当前队头元素的前一位置,r为队尾元素的位置,则队列中元素个数的计算公式是 ______。

    A.r-f

    B.n+f-r

    C.n+r-f

    D.(n+r-f)mod n


    正确答案:D

  • 第17题:

    某循环队列Q 的定义中用 front和 rear 两个整型域变量表示队列状态,其中 front 指示队头元素的位置、rear 指示队尾元素之后的位置(如下图所示,front的值为5、rear 的值为 1)。若队列容量为M(下图中 M=6),则计算队列长度的通式为()

    A.(Q.front-Q.rear)
    B.(Q.front- Q.rear+M)%M
    C.( Q.rear-Q.front)
    D.(Q. rear-Q.front +M)%M

    答案:D
    解析:
    根据题中的图示,当Q.rear-Q.front≥0时,队列长度为Q.rear-Q.front;当Q.rear-Q.front<0时,队列元素个数为(Q.rear-Q.front+M)。综上,队头元素的位置应该为(Q.rear-Q.size+M)%M。

  • 第18题:

    设顺序循环队列Q[O:M-1]的头指针和尾指针分别为F和R,头指针F总是指向队头元素的前一位置,尾指针R总是指向队尾元素的当前位置,则该循环队列中的元素个数为()。

    A.(F-R+M)%M
    B.F-R
    C.(R-F+M)%M
    D.R-F

    答案:C
    解析:
    (R-F+M)%M是计算顺序循环队列元素个数的公式。

  • 第19题:

    数组Q[n]用来表示一个循环队列,f为当前队列头元素的前一位置,r为队尾元素的位置,假定队列中元素的个数小于n,计算队列中元素的公式为()

    • A、r-f;
    • B、(n+f-r)%n;
    • C、n+r-f;
    • D、(n+r-F.%n

    正确答案:D

  • 第20题:

    用数组Q表示一个环形队列,f为当前对头元素的钱一位置,r为队尾元素的位置。假定队列中元素个数总小于n,求队列中元素个数公式是()。


    正确答案:(r-f+n)%n

  • 第21题:

    一个循环队列Q的存储空间大小为M,其队头和队尾指针分别为front和rear,则循环队列中元素的个数为:()。


    正确答案:(rear-front+M)%M

  • 第22题:

    单选题
    数组Q[n]用来表示一个循环队列,f为当前队列头元素的前一位置,r为队尾元素的位置,假定队列中元素的个数小于n,计算队列中元素的公式为()
    A

    r-f;

    B

    (n+f-r)%n;

    C

    n+r-f;

    D

    (n+r-F.%n


    正确答案: C
    解析: 暂无解析

  • 第23题:

    单选题
    数组Q[n]用来表示一个循环队列,f为当前队列头元素的前一位置,r为队尾元素的位置,假定队列中元素的个数小于n,计算队列中元素个数的公式为()。
    A

    r-f

    B

    (n+f-r)%n

    C

    n+r-f

    D

    (n+r-f)%n


    正确答案: A
    解析: 对于非循环队列,尾指针和头指针的差值便是队列的长度,而对于循环队列,差值可能为负数,所以需要将差值加上MAXSIZE(本题为n),然后与MAXSIZE(本题为n)求余,即(n+r-f)%n。

  • 第24题:

    填空题
    用数组Q表示一个环形队列,f为当前对头元素的钱一位置,r为队尾元素的位置。假定队列中元素个数总小于n,求队列中元素个数公式是()。

    正确答案: (r-f+n)%n
    解析: 暂无解析