对于循环队列,下列叙述中正确的是A.队头指针是固定不变的B.队头指针一定大于队尾指针C.队头指针
对于循环队列,下列叙述中正确的是
A.队头指针是固定不变的
B.队头指针一定大于队尾指针
C.队头指针一定小于队尾指针
D.队头指针可以大于队尾指针,也可以小于队尾指针
对于循环队列,下列叙述中正确的是
A.队头指针是固定不变的
B.队头指针一定大于队尾指针
C.队头指针一定小于队尾指针
D.队头指针可以大于队尾指针,也可以小于队尾指针
A.循环队列有队头和队尾两个指针,因此循环队列是非线性结构
B.循环队列中元素的个数是由队首指针和队尾指针共同决定的
C.循环队列中,只需要队尾指针就能反映队列中元素的动态变化情况
D.循环队列中,只需要队首指针就能反映队列中元素的动态变化情况
此题为判断题(对,错)。
A.(rear-length+m+1)%m
B.(rear-length+m)%m
C.(rear-length+m-1)%m
D.(rear-length)%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)
阅读下列算法,并回答问题:
(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);
}
}
A.队列的存储采用循环队列结构,目的是提高存储空间的重复利用,减少数据的搬移。
B.在队列和堆栈结构中,不能在中间插入和删除元素,只能在一端进行。
C.队列是一种先进后出的线性表。
D.堆栈是一种先进先出的线性表。
E.队列和堆栈都属于线性结构,是操作受限的线性表。
设循环队列为Q(1:m),其初始状态为front=rear=m。经过一系列入队与退队运算后,front=30,rear=10。现要在该循环队列中作顺序查找,最坏情况下需要比较的次数为()。
A.19
B.20
C.m-19
D.m-20