数据结构学习笔记------队列

题目:若用一个大小为 6 的数组来实现循环队列,且当前 rear 和 front 的值分别为 0 和 3,当从队列中删除一个元素,再加入两个元素后,rear 和 front 的值分别为( )。
A. 1 和 5         B.  2 和 4         C.  4 和 2        D. 5 和 1

循环队列 Q 是使用大小为 6 的数组 Q 来实现的。队空时,Q.fornt=Q.rear。若队列不为空,则 front 指向当前的队头元素,而 rear 指向当前队尾的下一个位置。当队头指针指向 3,而队尾指针指向 0 的时候,队头和队尾指针的位置如图所示。队列占用的位置为 3~5 的位置,尚未占用的是 0~2 的位置。

从队列中删除一个元素,Q.front=(Q.front+1)%MaxSize=(3+1)%6=4,front 指针指向数组下标为 4 的位置。此时,队列占用的位置为 4~5,没有占用的位置为 0~3,如图(2)所示。当有两个元素入队列时,依次执行两次 Q.rear=(Q.rear+1)% Maxsize,其中 Maxsize=6,找到的位置依次为 1 和 2。这两个元素入队列之后,队列的变化分别如下图所示。

从上面右图可以看出,此时 front 指针的值为 4,而 rear 指针的值为 2。所以,选择 B 。

猜你喜欢

转载自blog.csdn.net/qiaoqi17/article/details/108166801