#CSPJDSR03. CSP-J 数据结构|R03 队列 queue 与循环队列

CSP-J 数据结构|R03 队列 queue 与循环队列

CSP-J 数据结构|R03 队列 queue 与循环队列

训练重点: FIFO、front/back、数组模拟队列、循环队列判空判满与取模

每题只有一个正确选项。建议按 CSP 初赛方式独立完成,程序阅读题必须在草稿纸上逐步模拟。

第 1 题

队列 queue 的基本特点是( )。

{{ select(1) }}

  • 后进先出
  • 先进先出
  • 自动升序
  • 只能访问中间元素

第 2 题

关于 std::queue,下列说法正确的是( )。

{{ select(2) }}

  • q.pop() 删除队尾
  • q.front() 读取队首
  • q.back() 删除队尾
  • q.pop() 会返回被删除元素

第 3 题

执行下面代码后,输出为( )。

queue<int> q;
q.push(3);
q.push(5);
q.push(8);
q.pop();
q.push(1);
cout << q.front() << " " << q.back();

{{ select(3) }}

  • 3 1
  • 5 1
  • 5 8
  • 8 1

第 4 题

用普通数组模拟队列,设 head 指向当前队头,tail 指向最后一个元素。一次出队通常使( )。

{{ select(4) }}

  • head--
  • tail--
  • head++
  • tail++

第 5 题

循环队列采用“空出一个位置区分空和满”的做法,设数组长度为 N。队空条件是( )。

{{ select(5) }}

  • front==rear
  • (rear+1)%N==front
  • front+1==rear
  • rear==N-1

第 6 题

同一循环队列中,队满条件是( )。

{{ select(6) }}

  • front==rear
  • rear==N-1
  • (rear+1)%N==front
  • front==0

第 7 题

若循环队列数组长度 N=8,当前 rear=7,执行 rear=(rear+1)%N 后,rear 为( )。

{{ select(7) }}

  • 0
  • 1
  • 7
  • 8

第 8 题

若循环队列数组长度为 10,并采用“空出一个位置”的方法,则最多可保存( )个元素。

{{ select(8) }}

  • 8
  • 9
  • 10
  • 11

第 9 题

执行下面代码后,q.size() 为( )。

queue<int> q;
for(int i=1;i<=6;i++){
    q.push(i);
    if(i%2==0) q.pop();
}

{{ select(9) }}

  • 2
  • 3
  • 4
  • 6

第 10 题

下列任务最适合直接使用队列的是( )。

{{ select(10) }}

  • 深度优先搜索 DFS
  • 广度优先搜索 BFS
  • 表达式后缀求值
  • 函数递归返回

作答要求

  • 栈题:画清 栈底 / 栈顶。
  • 队列题:标清 队首 / 队尾。
  • 循环队列:每次移动都写出取模后的下标。
  • 链表题:逐句修改 next 箭头,不要只靠心算。
  • STL 题:特别注意函数是否会改变容器内容。