设顺序循环队列Q[0:M-1]的头指针和尾指针分别为F和R,头指针F总是指向队头元素的前一位置,尾指针R
A.R-F
B.F-R
C.(R-F+M)%M
D.(F-R+M)%M
A.R-F
B.F-R
C.(R-F+M)%M
D.(F-R+M)%M
A.sq.front=(sq.front+1)%m
B.sq.front=(sq.front+1)%(m+1)
C.sq.rear=(sq.rear+1)%m
D.sq.rear=(sq.rear+1)%(m+1)
循环队列用数组A[0…m-1]存放其元素值,已知其头尾指针分别是front和rear,则当前队列中的元素个数是()
A.(rear-front+m)MODm
B.rear-fomt+1
C.rear-fribt-1
D.rear-front
设循环队列的存储空间为Q(1:m),初始状态为空。现经过一系列正常的入队与退队操作后,front=m,rear=m-1,此后从该循环队列中删除一个元素,则队列中的元素个数为()。
A.m-2
B.1
C.m-1
D.0
A.r-f
B.r-f-1
C.(r-f)%N+1
D.(r-f+N)%N
A.qu.rear++
B.qu.rear=(qu.rear+1)%N
C.qu.front++;
D.qu.front=(qu.front+1)%N
设循环队列为Q(1:m),其初始状态为front=rear=m。经过一系列入队与退队运算后,front=30,rear=10。现要在该循环队列中作顺序查找,最坏情况下需要比较的次数为()。
A.19
B.20
C.m-19
D.m-20
阅读下列算法,并回答问题:
(1)Q、Q1和Q2都是队列结构,设队列Q=(1,0,-5,2,-4,-6,9),其中1为队头元素,写出执行f31(&Q,&Q1,&Q2)之后队列Q、Q1和Q2的状态;
(2)简述算法f31的功能。
(注:InitQueue、EnQueue、DeQueue和QueueEmpty分别是队列初始化、入队、出队和判队空的操作)
void f31(Queue*Q,Queue*Q1,Queue*Q2){
int e;
InitQueue(Q1);
InitQueue(Q2);
while(!QueueEmpty(Q)){
e=DeQueue(Q);
if(e>=0)EnQueue(Q1,e);
else EnQueue(Q2,e);
}
}
在一个容量为15的循环队列中,若头指针front=6,尾指针rear=14,则该循环队列中元素个数为()。
A.8
B.9
C.14
D.15
A.循环队列有队头和队尾两个指针,因此循环队列是非线性结构
B.循环队列中元素的个数是由队首指针和队尾指针共同决定的
C.循环队列中,只需要队尾指针就能反映队列中元素的动态变化情况
D.循环队列中,只需要队首指针就能反映队列中元素的动态变化情况
对于循环队列,下列叙述中正确的是
A.队头指针是固定不变的
B.队头指针一定大于队尾指针
C.队头指针一定小于队尾指针
D.队头指针可以大于队尾指针,也可以小于队尾指针