niusouti.com

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

题目

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

A.last=(last+1)%m,q[last]=x;

B.x=q[last], last =(last+1)%m;

C.q[last+1]=x;

D.q[(last+1)%m]=x;


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

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

    [说明]

    循环队列的类型定义如下(其中队列元素的数据类型为datatype):

    typedef struct{

    datatype data[MAXSIZE]; /*数据的存储区*/

    int front,rear; /*队首、队尾指针*/

    int num; /*队列中元素的个数*/

    }c _ SeQueue; /*循环队*/

    下面函数及其功能说明如下:

    (1) c_SeQueue* Init_SeQueue():新建队列;

    (2) int ln_SeQueue( c_SeQueue *q, datatype x):将元素x插入队列q,若成功返回1否则返回0;

    (3) int Out_SeQueue (c_SeQueue *q, datatype *x):取出队列q队首位置的元素,若成功返回1否则返回0。

    [函数]

    c_SeQueue* Init_SeQueue()

    { q=malloc(sizeof(c_SeQueue));

    q->front=q->rear=MAXSIZE-1;

    (1);

    return q;

    }

    int In_SeQueue( c_SeQueue *q, datatype x)

    { if(q->num= =MAXSIZE) return 0; /*队满不能入队*/

    else {

    q->rear=(2);

    q->data[q->rear]=x;

    (3);

    return 1; /*入队完成*/

    }

    }

    int Out_SeQueue( c_SeQueue *q, datatype *x)

    { if (q->num= =0) return 0; /*队空不能出队*/

    else{

    *x=(4); /*读出队首元素*/

    q->front=(5);

    q->num- -;

    return 1; /*出队完成*/

    }

    }


    正确答案:(1) q->num=0 (2) (q->rear+1) % MAXSIZE (3) q->num++ (4) q->data[q->front] (5) (q->front+1)%MAXSIZE
    (1) q->num=0 (2) (q->rear+1) % MAXSIZE (3) q->num++ (4) q->data[q->front] (5) (q->front+1)%MAXSIZE 解析:(1)新建的队列中元素个数应为0;
    (2)向循环队列中添加新元素后,队尾指针应向后移动一位;
    (3)向循环队列中添加新元素后,队列中元素个数应增1;
    (4)取出队首位置的元素;
    (5)从循环队列中取出一个元素后,队首指针应向后移动一位。

  • 第2题:

    在一个用数组实现的循环队列类中,假定数组长度为MS,队首元素位置为first,队列长度为 length,则队尾(即最后一个)元素的位置为(37)。

    A.length+1

    B.first+length

    C.(first+length-1)%MS

    D.(first+length)%MS


    正确答案:C
    解析:在顺序队列中,已知队首元素位置为first,队列长度为length,则队尾(即最后一个)元素的位置应为first+length-1。本题中考虑循环队列,因此应模队列的最大长度MS取余。

  • 第3题:

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

  • 第4题:

    在一个用数组实现的队列类中,假定数组长度为MS,队首元素位置为first,队列长度为length,则队尾(即最后一个)元素的位置为( )。

    A.length+1

    B.first+length

    C.(first+length-1)%MS

    D.(first+length)%MS


    正确答案:C

  • 第5题:

    以数组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)。

  • 第6题:

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


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

  • 第7题:

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

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

    正确答案:B

  • 第8题:

    在一个用数组实现的队列类中,假定数组长度为MS,队首元素位置为first,队列长度为length,则队尾的后一个位置为()。

    • A、length+1
    • B、first+length
    • C、(first+length—1)%MS
    • D、(first+length)%MS

    正确答案:D

  • 第9题:

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


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

  • 第10题:

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

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

  • 第11题:

    单选题
    设顺序循环队列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
    解析: 暂无解析

  • 第12题:

    单选题
    在一个用数组实现的队列类中,假定数组长度为MS,队首元素位置为first,队列长度为length,则队尾的后一个位置为()。
    A

    length+1

    B

    first+length

    C

    (first+length—1)%MS

    D

    (first+length)%MS


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

  • 第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
    循环队列采用的方法是:假设向量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。

  • 第14题:

    阅读下列函数说明和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从链队中取出。

  • 第15题:

    设数组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

  • 第16题:

    在一个用数组实现的队列类中,假定数组长度为MS,队首元素位置为first,队列长度为length,则队首的后一个位置为( )。

    A.first+1

    B.(first+1)%MS

    C.(first-1)%MS

    D.(first+length)%MS


    正确答案:B

  • 第17题:

    在一个不带头结点的非空链队中,f和r分别为队头和队尾指针,队结点的数据域为data,指针域为next,若要进行出队操作,并用变量x存放出队元素的数据值,则相关操作为x=f->data;()。
    f=f->next;

  • 第18题:

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


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

  • 第19题:

    在一个用数组实现的队列类中,假定数组长度为MS,队首元素位置为first,队列长度为length,则删除一个元素后队首的位置为()。


    正确答案:(first+l)%MS

  • 第20题:

    在一个用数组实现的队列类中,假定数组长度为MS,队首元素位置为first,队列长度为length,则队首的后一个位置为()。

    • A、first+1
    • B、(first+l)%MS
    • C、(first—1)%MS
    • D、(first+length)%MS

    正确答案:B

  • 第21题:

    填空题
    在一个用数组实现的队列类中,假定数组长度为MS,队首元素位置为first,队列长度为length,则删除一个元素后队首的位置为()。

    正确答案: (first+l)%MS
    解析: 暂无解析

  • 第22题:

    填空题
    在一个不带头结点的非空链队中,f和r分别为队头和队尾指针,队结点的数据域为data,指针域为next,若要进行出队操作,并用变量x存放出队元素的数据值,则相关操作为x=f->data;()。

    正确答案: f=f->next
    解析: 暂无解析

  • 第23题:

    单选题
    在一个用数组实现的队列类中,假定数组长度为MS,队首元素位置为first,队列长度为length,则队首的后一个位置为()。
    A

    first+1

    B

    (first+l)%MS

    C

    (first—1)%MS

    D

    (first+length)%MS


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

  • 第24题:

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

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