niusouti.com

数组q[M]存储一个循环队,first和last分别是首尾指针,如果使元素x进队操作的语句为“q[last]=x,last=(last+1)%m;”那么判断队满的条件是_____。A.last= =firstB.last= =M-1C.(last+1)%m= =firstD.last+1= =first

题目

数组q[M]存储一个循环队,first和last分别是首尾指针,如果使元素x进队操作的语句为“q[last]=x,last=(last+1)%m;”那么判断队满的条件是_____。

A.last= =first

B.last= =M-1

C.(last+1)%m= =first

D.last+1= =first


相似考题
参考答案和解析
(last- first+M)%M
更多“数组q[M]存储一个循环队,first和last分别是首尾指针,如果使元素x进队操作的语句为“q[last]=x,last=(last+1)%m;”那么判断队满的条件是_____。”相关问题
  • 第1题:

    设数组Data[0..m]作为循环队列SQ的存储空间,front为队头指针,rear为队尾指针,则执行出队操作的语句为()

    :Afront=front+1

    Bfront=(front+1)% m

    Crear=(rear+1)%m

    Dfront=(front+1)%(m+1)


    参考答案:D

  • 第2题:

    设数组data[0…m]作为循环队列s q的存储空间,front为队头指针,rear为队尾指针,则执行出队操作的语句为( )。

    A.S q↑.front:=s q↑.front+1;

    B.S q↑.front:=(S q↑.front+1)%maxsize;

    C.S q↑.rear:=(S q↑.rear+1)%maxsize;

    D.S q↑.front:=(s q↑.front+1)%(maxsize+1);


    正确答案:B
    循环队列采用的方法是:假设向量Sq↑.data[maxsize]是一个首尾相接的圆环,即Sq↑.data[0]接在Sq↑.data[maxsize—1]之后,我们将这种意义下的向量称循环向量,并将循环向量中的队列称为循环队列。若当前尾指针等于向量的上界,则再做入队列操作时,令尾指针等于向量的下界,这样就利用到已被删除的元素空间,克服假上溢现象。因此入队操作时,在循环意义下的尾指针加1操作可描述为:if(Sq↑.rear>=maxsize)sq↑.near:=0;elsesq↑.rear++;如果利用“模运算”,上述循环意义下的尾指针加l操作,可以更简洁地描述为:Sq↑.rear=(sq↑.rear+1)%maxsize。同样,出队操作时,在循环意义下的头指针加1操作,也可利用“模运算”来实现:sq↑.front:=(sq↑.front+1)%max—size。

  • 第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题:

    阅读下列函数说明和C函数,将应填入(n)处的字句写在对应栏内。

    [说明]

    链式存储的队列称为链队。根据队列的FIFO原则,为了操作上的方便,可以使用带头指针front和尾指针rear的单链表来实现链队。若链队元素的数据类型为datatype,则链队结构描述如下:

    typedef struct node

    { datatypedata;

    structnode *next;

    } QNode; /*链队结点的类型*/

    typedef struct

    { QNnode *front,*rear;

    } LQueue; /*将头尾指针封装在一起的链队*/

    以下这种链队的几个例子:

    设q是一个指向链队的指针,即LQueue *q。下面各函数的功能说明如下:

    (1) LQueue *Init_LQueue():创建并返回一个带头尾结点的空链队;

    (2) intEmpty_LQueue( LQueue *q):判断链队q是否空;

    (3) void In_LQueue(LQueue *q, datatypex):将数据x压入链队q;

    (4) int Out_LQueue(LQuere *q, datatype *x):弹出链队q的第一个元素x,若成功则返回返回1否则返回0。

    [函数]

    LQueae *Init_LQueue()

    { LQueue *q, *p;

    q=malloc(sizeof(LQueue)); /*申请链队指针*/

    P=malloc(sized(QNode));/*申请头尾指针结点*/

    p->next=NULL;

    (1)=p;

    return q;

    }

    int Empty_LQueue(LQueue *q)

    { if(q->front (2) q>rear) return 0;

    else return 1;

    }

    void In_LQueue(LQueue *q, datatype x)

    { QNoda *p;

    p=malloc(sizeof(QNnode));/*申请新接点*/

    p->data=x;

    p->next=NULL;

    (3)=p;

    q->rear=p;

    }

    int Out_LQueue(LQueue *q, datatype *x)

    { QNnode *p;

    if(Empty_LQueue(q)) return 0; /*队空,操作失败*/

    else{

    p=q->front->next;

    *x=(4);

    (5)=p->next;

    free(p);

    if (q->front->next= =NULL)q->rear=q->front;

    return 1;

    }

    }


    正确答案:(1) q->front=q->rear (2) = = (3)q-> rear->next (4) p->data (5) q->front->next
    (1) q->front=q->rear (2) = = (3)q-> rear->next (4) p->data (5) q->front->next 解析:(1)初始化链队q时,需要初始化其头尾指针,空链队的头尾指针相等;
    (2)链队头尾指针重合当且仅当链队为空;
    (3)向链队插入新元素的操作是在链队末尾进行的,需要将新元素结点接在原链队队尾,再让新的尾指针指向这一新结点;
    (4)~(5):链队q的第一个元素存放在其头结点之后的第一个结点(即p=q->front->next)中。*x= p->data表示将这个元素取出,以参数*x的形式返回:q->front->next=p->next表示将结点p从链队中取出。

  • 第5题:

    设数组data[0…m]作为循环队列SQ的存储空间,front为队头指针,rear为队尾指针,则执行出队操作的语句为______。

    A.front:=front+1

    B.front:=(front+1)mod m

    C.rear:=(rear+1)mod m

    D.front:=(front+1)mod(m+1)


    正确答案:D

  • 第6题:

    一个循环队列Q最多可存储m个元素,已知其头尾指针分别是front和rear,则判定该循环队列为满的条件是()。

    A.Q.rear-Q.front==m
    B.Q.real!==Q.front
    C.Q.front==(Q.real+1)%m
    D.Q.front==Q.rear%m+1

    答案:C
    解析:
    少用一个元素空间和空队区别开:每次入队前测试入队后头尾指针是否会重合,如果会重合就认为队列已满,这种情况下队满的条件是:(Q.rear+1)%MAXSIZE==Q.front。

  • 第7题:

    对于一个以顺序实现的循环队列Q[0…m-1],队头、队尾指针分别为f、r,其判空的条件是(),判满的条件是()。


    正确答案:f=r;(r+1)%m==f

  • 第8题:

    在一个循环顺序队列Q中,判断队空的条件为(),判断队满的条件为()。


    正确答案:front==rear;(rear+1)%QueueMaxSize==front

  • 第9题:

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


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

  • 第10题:

    单选题
    设数组Data[m+1]作为循环队列sq的存储空间,front成为队头指针,rear为队尾指针,则执行入队操作的语句为()
    A

    rear = rear+1

    B

    rear = (rear+1)%m

    C

    front = (front+1)%m

    D

    rear = (rear+1)%m + 1


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

  • 第11题:

    填空题
    对于一个以顺序实现的循环队列Q[0…m-1],队头、队尾指针分别为f、r,其判空的条件是(),判满的条件是()。

    正确答案: f=r,(r+1)%m==f
    解析: 暂无解析

  • 第12题:

    填空题
    假设以数组Q[m]存放循环队列中的元素,同时以rear和length分别只是循环队列中的队尾位置和队列中的所含元素的个数,则该循环的队列的对满条件为()。

    正确答案: length==Maxsize
    解析: 暂无解析

  • 第13题:

    设数组data[0…m]作为循环队列S q的存储空间,front为队头指针,rear为队尾指针,则执行出队操作的语句为( )。

    A.S q↑.front:=S q十.front+1;

    B.S q↑.front:=(S q十.front+1)%maxsize;

    C.S q↑.rear:=(s q十.rear+1)%maxsize;

    D.S q↑.front:=(s q十.front+1)%(maxsize+1);


    正确答案:B
    B。【解析】循环队列采用的方法是:假设向量sq↑.data[maxsize]是一个首尾相接的圆环,即sq↑.data[0]接在sq↑.data[maxsize-1]之后,我们将这种意义下的向量称循环向量,并将循环向量中的队列称为循环队列。若当前尾指针等于向量的上界,则再做入队列操作时,令尾指针等于向量的下界,这样就利用到已被删除的元素空间,克服假上溢现象。因此入队操作时,在循环意义下的尾指针加l操作可描述为:if(Sq↑.rear>=maxsize)sq↑.near:=0;elsesq↑.rear++;如果利用“模运算”,上述循环意义下的尾指针加l操作,可以更简洁地描述为:sq↑.rear=(sq↑.rear+1)%maxsize。同样,出队操作时,在循环意义下的头指针加1操作,也可利用“模运算”来实现:sq↑.front:=(sq↑.front+1)%max-size。

  • 第14题:

    循环队列中,设队列元素依次存放在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

  • 第15题:

    某循环队列的存储空间为Q(4:m),初始状态为front=lea/"=m。现经过一系列的人队操作和退队操作后,front=m,r6ar=m一1,则该循环队列中的元素个数为( )。

    A.m一1

    B.m

    C.1

    D.0


    正确答案:A
    循环队列长度为rl3,由初始状态为锄t=re“=m,可知此时循环队列为空。入队运算时,首先队尾指针进1(即rear+1),然后在re”指针指向的位置插入新元素。特别的,当队尾指针瑚r=nl+1时,置rear=1。退队运算时,徘头指针进1(即front+1),然后删除f∞ont指针指向的位置上的元素,当排头指针front=ITI+1时,置front=1。从排头指针front指向的后一个位置直到队尾指针rear指向的位置之间所有的元素均为队列中的元素。如果l_efl.r—front>0,则队列中的元素个数为rear—front个;如果reⅡ一front<0,则队列中的元素个数为rear—front+m。该题中m一1<ITl,即/"ear—front<0,则该循环队列中的元素个数为(m一1)一m+111=m一1。故选A选项。

  • 第16题:

    设循环队列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进行求模操作,修正位置号。

  • 第17题:

    循环队列Q(n:m)满足哪个条件时,可以判断队列为? ( )

    A.队尾指针=0

    B.排头指针=0

    C.队尾指针=排头指针

    D.以上条件均不充分


    正确答案:D

  • 第18题:

    以数组Data[m+1]作为循环队列SQ的存储空间,front为头指针,rear为队尾指针,则执行出队操作的语句是()。

    A.front=front+1
    B.front=(front+1)%m
    C.front=(front+1)%(m+1)
    D.rear=(rear+1)%m

    答案:C
    解析:
    循环队列的出队操作是:front=(front+1)%(m+l)。

  • 第19题:

    在一个顺序存储的循环队列Q[0…M-1],头尾指针分别是front和rear,判断队空的条件为(),判断队满的条件为()。


    正确答案:front==rear;front==(rear+1)%M

  • 第20题:

    假设以数组Q[m]存放循环队列中的元素,同时以rear和length分别只是循环队列中的队尾位置和队列中的所含元素的个数,则该循环的队列的对满条件为()。


    正确答案:length==Maxsize

  • 第21题:

    填空题
    在一个循环顺序队列Q中,判断队空的条件为(),判断队满的条件为()。

    正确答案: front==rear,(rear+1)%QueueMaxSize==front
    解析: 暂无解析

  • 第22题:

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

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

  • 第23题:

    单选题
    设数组data[m]作为循环队列SQ的存储空间,front为队头指针,rear为队尾指针,则执行出队操作后其头指针front值为()。
    A

    front=front+1

    B

    front=(front+1)%(m-1)

    C

    front=(front-1)%m

    D

    front=(front+1)%m


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

  • 第24题:

    填空题
    在一个顺序存储的循环队列Q[0…M-1],头尾指针分别是front和rear,判断队空的条件为(),判断队满的条件为()。

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