数组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[0…M-1],头尾指针分别是front和rear,判断队空的条件为(),判断队满的条件为()。 A.不能延伸网络可操作的距离B.不能过滤网络流量C.不能在网络上发送变弱的信号D.不能放大变弱的信号
设循环队列Q的定义中有rear和len两个域变量,其中rear表示队尾元素的指针,len表示队列的长度,如下图所示(队列长度为3,队头元素为e)。设队列的存储空间容量为M,则队头元素的指针为(57)。A.(Q.rear+Q.len-1)B.(Q.rear+Q.1en-1+M)%MC.(Q.rear-Q.1en+1)D.(Q.rear-Q.1en+1+M)%M
假设以数组Q[m]存放循环队列中的元素, 同时设置一个标志tag,以tag == 0和tag == 1来区别在队头指针(front)和队尾指针(rear)相等时,队列状态为“空”还是“满”。试编写与此结构相应的插入(enqueue)和删除(dlqueue)算法。
设数组Data[0..m]作为循环队列SQ的存储空间,front为队头指针,rear为队尾指针,则执行出队操作的语句为() :Afront=front+1Bfront=(front+1)% mCrear=(rear+1)%mDfront=(front+1)%(m+1)
设数组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);
设数组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);
循环队列中,设队列元素依次存放在Q[0..m]中,f、r分别指示队头元素位置和队尾元素的下一个位置,约定存储m个元素时为队满。则队列空的判定方法是(),队列满的判定方法是()。 A.f==rB.(f+1)%(m+1)==rC.(r+1)%(m+1)==fD.(r+1)% m==f
循环队列A[0…m-1)存放其元素,用front和Feat分别表示队头和队尾,则循环队列满的条件是(35)。A.Q.rear+1==Q.frontB.Q.rear==Q.front+1C.Q.rear==Q.frontD.(Q.rear+1)%m==Q.front
某循环队列的存储空间为Q(4:m),初始状态为front=lea/"=m。现经过一系列的人队操作和退队操作后,front=m,r6ar=m一1,则该循环队列中的元素个数为( )。A.m一1B.mC.1D.0
阅读下列函数说明和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;}}
设循环队列Q的定义中有front和size两个域变量,其中front表示队头元素的指针,size表示队列的长度,如下图所示(队列长度为3,队头元素为x,队尾元素为z)。设队列的存储空间容量为M,则队尾元素的指针为 (58)。A.(Q.front+Q.size-1)B.(Q.front+Q.size-1+M)%MC.(Q.front-Q.size)D.(Q.front-Q.size+M)%M
设数组data[0…m]作为循环队列SQ的存储空间,front为队头指针,rear为队尾指针,则执行出队操作的语句为______。A.front:=front+1B.front:=(front+1)mod mC.rear:=(rear+1)mod mD.front:=(front+1)mod(m+1)
一个循环队列Q最多可存储m个元素,已知其头尾指针分别是front和rear,则判定该循环队列为满的条件是()。A.Q.rear-Q.front==mB.Q.real!==Q.frontC.Q.front==(Q.real+1)%mD.Q.front==Q.rear%m+1
以数组Data[m+1]作为循环队列SQ的存储空间,front为头指针,rear为队尾指针,则执行出队操作的语句是()。A.front=front+1B.front=(front+1)%mC.front=(front+1)%(m+1)D.rear=(rear+1)%m
单选题设数组Data[m+1]作为循环队列sq的存储空间,front成为队头指针,rear为队尾指针,则执行入队操作的语句为()Arear = rear+1Brear = (rear+1)%mCfront = (front+1)%mDrear = (rear+1)%m + 1
单选题设数组data[m]作为循环队列SQ的存储空间,front为队头指针,rear为队尾指针,则执行出队操作后其头指针front值为()。Afront=front+1Bfront=(front+1)%(m-1)Cfront=(front-1)%mDfront=(front+1)%m
填空题在一个顺序存储的循环队列Q[0…M-1],头尾指针分别是front和rear,判断队空的条件为(),判断队满的条件为()。