1.若用数组A[0...5]来实现循环队列,且当前rear和front的值分别为1和5,当从队列中删除一个元素,再加入两个元素后,rear和front的值分别为( )。
A. 3和4 B.3和0 C.5和0 D.5和1
front=5 循环队列,当出队列(删除)时front=(front+1)%6=0
rear=1,每次入队列(加入)时 rear=(rear+1)%6=2 ,每二次再加入元素时rear=(2+1)%6=3
正确答案为B
2.
循环队列放在一维数组A[0...M-1]中,end1指向队头元素,end2指向队尾元素的后一个位置。假设队列两端均可进行入队和出队操作,队列中最多能容纳M-1个元素。初始时为空。下列判断队空和队满的条件中,正确的是( )。
A.队空:end1==end2;队满:end1==(end2+1)mod M
B.队空:end1==end2;队满:end2==(end1+1)mod (M-1)
C.队空:end2==(end1+1) mod M;队满:end1==(end2+1) mod M
D.队空:end1==(end2+1) mod M;队满:end2==(end1+1)mod (M-1)
解:数组中可以容纳M个元素,队列中最多容纳M-1个元素,说明当队列满时要空出一个元素的位置,少占用一个空间;这里两个指针就是换了名字,end1就相当于front,end2就相当于rear,所以正确答案为A