#3691. 队列(客观练习 19 题)

队列(客观练习 19 题)

  1. 在队列中,元素的添加和删除是按照( )原则进行的。

{{ select(1) }}

  • 先进先出
  • 先进后出
  • 最小值先出
  • 随机进出
  1. 循环队列中,队列最大容量为 maxSize,front指向队头,rear指向队尾。判断队列已满的条件是( )。

{{ select(2) }}

  • rear == front
  • (rear + 1) % maxSize == front
  • (rear - 1 + maxSize) % maxSize == front
  • (rear - 1) == front
  1. 在一个循环队列中,front 指向队头元素的位置,rear 指向队尾元素的下一个位置。初始化时,front 和 rear 的值应为( )。

{{ select(3) }}

  • 0和0
  • 0和1
  • 1和0
  • 1和1
  1. 在一个循环队列中,队列的最大容量为 5,采用“空一格判满”的策略。执行下列操作后的结果是( )。 int MAX = 5; int queue[MAX]; int front = 0, rear = 0; enqueue(1); enqueue(2); enqueue(3); enqueue(4); dequeue(); dequeue(); enqueue(5); enqueue(6);

{{ select(4) }}

  • 已满,rear = 1
  • 未满,rear = 1
  • 已满,rear = 2
  • 未满,rear = 4
  1. 以下场景中,最适合使用循环队列的是( )。

{{ select(5) }}

  • 函数调用过程中,保存局部变量和返回地址
  • 表达式求值中的运算符优先级处理
  • 生产者和消费者问题中的共享缓冲区
  • 操作系统中的进程优先级调度
  1. 下面关于循环队列的说法,错误的是( )。

{{ select(6) }}

  • 循环队列解决了普通顺序队列的“假溢出”问题
  • 循环队列通常牺牲一个存储单元来区分队空和队满
  • 循环队列的入队和出队操作时间复杂度均为 O(1)
  • 循环队列只能用数组实现,不能用链表实现
  1. 下列有关栈和队列的描述,错误的是( )。

{{ select(7) }}

  • 栈是一种后进先出的线性结构
  • 队列是一种先进先出的线性结构
  • 栈和队列都可以用链表实现
  • 栈和队列的元素进出都是唯一端
  1. 二叉树的层序遍历算法中,当访问完一个节点后,应将该节点的( )加入队列。

{{ select(8) }}

  • 左右孩子
  • 只加入左孩子
  • 只加入右孩子
  • 父节点
  1. 设循环队列的数组大小为 N,队首指针为 front,队尾指针为 rear,则队列中的元素个数为( )。

{{ select(9) }}

  • (rear - front + N) % N
  • rear - front
  • (front - rear + N) % N
  • rear - front + N
  1. 下列有关栈和队列的应用,对应错误的是( )。

{{ select(10) }}

  • 栈—括号匹配
  • 队列—BFS
  • 栈—表达式求值
  • 队列—DFS
  1. 下列关于 STL 中 queue 容器的说法,正确的是( )。

{{ select(11) }}

  • queue 支持随机访问
  • queue 的底层默认使用 deque
  • queue 只能存储基本类型
  • queue 不允许元素的插入和删除
  1. 下列关于栈和队列的说法,正确的是( )。

{{ select(12) }}

  • 栈和队列都是线性结构
  • 栈和队列的元素进出都在同一端
  • 栈是先进先出,队列是后进先出
  • 栈和队列都不允许遍历
  1. 关于循环队列,下列哪些说法是正确的?( )

{{ multiselect(13) }}

  • 循环队列解决了顺序队列的“假溢出”问题
  • 循环队列通常使用一个空闲位置来区分队空和队满
  • 循环队列的入队和出队操作时间复杂度为 O(1)
  • 循环队列只能使用数组实现
  1. 关于队列的基本操作,下列哪些是正确的?( )

{{ multiselect(14) }}

  • enqueue(入队)
  • dequeue(出队)
  • isEmpty(判空)
  • getSize(获取大小)
  1. 关于栈和队列,下列说法正确的有( )。

{{ multiselect(15) }}

  • 栈和队列都是线性表
  • 栈和队列都限制了元素的操作位置
  • 栈是后进先出的,队列是先进先出的
  • 栈和队列都可以用数组实现
  1. 为了实现一个队列,使其出队操作的时间复杂度为 O(1) 并且避免数组删除首元素的 O(n) 问题,常见有效的方法是使用环形数组。( )

{{ select(16) }}

  • 正确
  • 错误
  1. 循环队列中,队空和队满的判断条件可能相同,因此需要牺牲一个存储单元来区分。( )

{{ select(17) }}

  • 正确
  • 错误
  1. 栈是一种先进先出(FIFO)的线性数据结构。( )

{{ select(18) }}

  • 正确
  • 错误
  1. 队列的入队操作发生在队尾,出队操作发生在队头。( )

{{ select(19) }}

  • 正确
  • 错误