队列

2022.12.10

队列的基本概念

操作受限的线性表、先进先出FIFO、队头(删除)、队尾(添加)、空队列

队列的顺序存储

 

队列的链式存储

双端队列

习题

  1. 栈和队列的主要区别在于() A. 它们的逻辑结构不一样 C.所包含的元素不一样 B. 它们的存储结构不一样 D. 插入、删除操作的限定不一样

    【答案】:D

  2. 队列的“先进先出”特性是指() I. 最后插入队列中的元素总是最后被删除 II. 当同时进行插入、删除操作时,总是插入操作优先 III. 每当有删除操作时,总要先做一次插入操作 IV.每次从队列中删除的总是最早插入的元素 A. I B.I和IV C.II和III D. IV

    【答案】:B

  3. 允许对队列进行的操作有()。 A.对队列中的元素排序 B. 取出最近进队的元素 C.在队列元素之间插入元素 D.删除队头元素

    【答案】:D

  4. 一个队列的入队顺序是1,2,3,4,则出队的输出顺序是( )。 A. 4,3,2,1 B. 1,2,3,4 C. 1,4,3,2 D. 3.2.4,1

    【答案】:B

  5. 循环队列存储在数组A[O...n]中,入队时的操作为( )。 A. rear=rear+1 B. rear=(rear+1) mod (n-1) C. rear=(rear+1) mod n D. rear=(rear+1) mod (n+1)

    【答案】:D

  6. 已知循环队列的存储空问为教組 A[21],float 指向队头元素的前一个位置,rear指向队尾元素,假设当前 front 和 rear 的值分别为8和3,则该队列的长度为()。 A. 5 B. 6 C. 16 D. 17

    【答案】:0,1,2,3,4,5,6,7,8,【9。。。,19,20,0,1,2,3】,4,5

    C

  7. 若用数组A[0..5]来实现铺环队列,且当前rear和front的值分别为 1和5,当从队列中州除一个元素,再加入两个元素后,rear 和front 的值分别为( )。 A.3和4 B.3和0 C. 5和0 D5和1

    【答案】: 0,1,2,3,4,5,0,1,2,3,B

  8. 假设一个循环队列Q[MaxSize]的队头指针为 front,队尾指針为 rear,队列的最大容量为 Maxsize,此外,该队列再没有其他数据成员,则判断该队的列满条件是()。 A. Q. front==Q.rear B. Q.front+Q.rear>=MaxSize C. Q. front== (Q.rear+1) %MaxSize D. Q.rear== (Q. front+1) % MaxSize

    【答案】:A->C

  9. 最适合用作链队的链表是()。 A.带队首指针和队尾指针的循环单链表 B. 带队首指针和队尾指针的非循环单链表 C.只带队首指针的非補环单链表 D. 只带队首指针的辅环单链表

    【答案】:A->B

  10. 最不适合用作链式队列的链表是( )。 A. 只带队首指针的非循环双链表 B. 只带队首指针的循环双链表 C. 只带队尾指针的循环双链表 D. 只带队尾指针的循环单链表

    【答案】:D->A

  11. 在用单链表实现队列时,队头设在链表的()位置。 A.链头 B.链尾 C.链中 D.以上都可以

【答案】:D->A

  1. 用链式存储方式的队列进行删除操作时需要()。 A.仅修改头指针 B.仅修改尾指针 C.头尾指针都要修改 D.头尾指针可能都要修改

    【答案】:A->D

  2. 在一个链队列中,假设队头指针为front,队尾指针为rear,x所指向的元素需要入队,则需要执行的操作为( ). A. front=x, front=front->next B. x->next=front->next, front=x C. rear-›next=x, rear=x D. rear-›next=x, x-›next=null, rear=x

    【答案】:C->D

  3. 假设循环单链表表示的队列长度为n,队头固定在链表尾,若只设头指针,则进队採作的时间复杂度为(). A. O(n) B. O(1) C. O(n^2) D. O(nlog_2 n)

    【答案】:B->A

  4. 若以1,2,3,4作为双端队列的输入序列,则既不能由输入受限的双端队列得到,又不能由输出受限的双端队列得到的输出序列是()。 A. 1,2,3,4 B. 4.1.3.2 C. 4,2,3,1 D. 4,2,1,3

    【答案】:C

  5. 【2010 统考真题】某队列允许在共两端进行入队採作,但仅允许在一端进行出队操作。若元素a,b,c,d,e依次入此队列后再进行出队探作,則不可能得到的出队序列是(). A. b,a,c,d,e B. d.b,a,c,e C. d,b,c.a.e D. e.c.b.a.d

    【答案】:C

  6. 【2011 统考真题】已知循环队列存储在一维数组,A[0, n-1]中,且队列非空时 front 和 rear 分别指向队头元素和队尾元素。若初始时队列为空,且要求第一个进入队列的元素存储在A[0]处,则初始时front和rear的值分别是( ) A. 0,0 B. 0,n-1 C. n-1,0 D. n-1,n-1

    【答案】:B

    我的方法:

    王道给出了一种方法,front指向第一个元素,如果空的时候指向0;rear指下一个要插入的元素,如果是空就指向0,因为“下一个要插入的元素”就是0!

    所以这道题,rear指向队尾元素,就可以理解成“下一个要插入位置的前一个”,表空的时候下一个插入到0,所以rear一开始指向n-1!

  7. 【2014 统考真题】循环队列放在一维数组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);

    【答案】:D->A

  8. 【2016 统考真题】设有如下图所示的火车车轨,入口到出口之问有n条轨道,列车的行进方向均为从左至右,列车可驶入任意一条轨道。现有编号为 1~9 的9列列车,驶入的次序依次是8,4,2,5,3,9,1,6,7。若期望驶出的次序依次为1~9,则n至少是() A. 2 B. 3 C. 4 D. 5

    截屏2022-09-07 下午10.34.55

    【答案】:8 4 2 5 3 9 1 6 7

    答案讲解

    98

    7654

    32

    1

    C

  9. 【2018 统考真题】现有队列Q与栈S,初始时Q中的元素依次是1,2,3,4,5,6(1 在以头),S为空。若仅允许下列 3 种操作:① 出队并输出出队元素;② 出队并将出队元素入栈;③ 出栈并输出出栈元秦,则不能得到的输出序列是( )。 A. 1.2.5.6.4.3 B. 2.3.4.5.6.1 C. 3.4.5.6.1.2 D. 6.5,4,3.2.1

    【答案】:C

  10. 【2021 统考真题】初始为空的队列Q的一端仅能进行入队操作,另外一端既能进行入队操作又能进行出队操作。若Q的入队序列是1,2,3,4,5,则不能得到的出以序列是( ) A. 5, 4, 3, 1, 2 B. 5, 3, 1, 2, 4 C. 4, 2, 1, 3, 5 D. 4, 1, 3, 2, 5

    【答案】:D

  11. 若希望循环队列中的元索都能得到利用,则需设置一个标志域tag,并以tag的值为0或1来区分队头指针front 和队尾指针rear相同时的队列状态是“空”还是“满”试编写与此结构相应的入队和出队算法。

    【答案】:

  12. Q是一个队列,S是一个空栈,实现将队列中的元素逆置的算法。

  13. 利用两个栈 S1,S2 来模拟一个队列,已知栈的4个运算定义如下:

    如何利用栈的运算来实现该队列的3个运算(形参由读者根据要求自己设计)?

    【答案】:

  14. 【2019统考真题】请设计一个队列,要求满足:【1】初始时对列为空【2】入队时,允许增加队列占用空间;【3】出队后,出队元素所占用的空向可重复使用,空间只增不减:【4】入队採作和出队操作的时间复杂度始终保持为 0(1)。请回答下列问题: 1)该队列是应选择链式存储结构,还是应选择顺序存储结构? 2)画出队列的初始状态,并给出判断队空和队满的条件。 3)画出第一个元素入队后的队列状态。 4)给出入队操作和出队操作的基本过程。

    【答案】:

    1. 链式

    2. image-20220908181124640

    3. 6411662632007_.pic