#CSPJ2R02. 第二节-02 栈程序阅读与应用

第二节-02 栈程序阅读与应用

第二节-02 栈程序阅读与应用

CSP-J 第一轮专项训练。 本题全部为单项选择题,提交后自动判分。

1.

阅读程序:

stack<int> s;
for (int i = 1; i <= 4; ++i)
    s.push(i);
s.pop();
cout << s.top();

输出为( )。

{{ select(1) }}

  • A. 1
  • B. 2
  • C. 3
  • D. 4

2.

阅读程序:

stack<int> s;
for (int i = 1; i <= 6; ++i)
    if (i % 2 == 0) s.push(i);
cout << s.top();

输出为( )。

{{ select(2) }}

  • A. 2
  • B. 4
  • C. 5
  • D. 6

3.

检查括号序列是否合法时使用栈,最主要的原因是( )。

{{ select(3) }}

  • A. 最早出现的左括号总要最先匹配
  • B. 最后出现且尚未匹配的左括号要最先匹配
  • C. 栈会自动识别括号类型
  • D. 栈可以对括号排序

4.

下列括号序列中合法的是( )。

{{ select(4) }}

  • A. ([)]
  • B. (()
  • C. {[()]}
  • D. ())(

5.

固定入栈顺序为 1、2、3,且每个元素只入栈一次,下列不可能的完整出栈顺序是( )。

{{ select(5) }}

  • A. 3 2 1
  • B. 2 3 1
  • C. 2 1 3
  • D. 3 1 2

6.

后缀表达式 5 2 + 3 * 的值是( )。

{{ select(6) }}

  • A. 11
  • B. 15
  • C. 21
  • D. 24

7.

阅读程序:

stack<int> s;
for (int i = 1; i <= 4; ++i) s.push(i);
int sum = 0;
while (!s.empty()) {
    sum += s.top();
    s.pop();
}
cout << sum;

输出为( )。

{{ select(7) }}

  • A. 4
  • B. 6
  • C. 10
  • D. 24

8.

若把字符串 CSPJ 的每个字符按从左到右顺序压栈,再依次全部弹出,则得到( )。

{{ select(8) }}

  • A. CSPJ
  • B. JSPC
  • C. JCSP
  • D. JPSC

9.

在通常的 STL 实现与算法复杂度分析中,stack 的 push、pop、top 单次操作可视为( )。

{{ select(9) }}

  • A. O(1)
  • B. O(log n)
  • C. O(n)
  • D. O(n²)

10.

递归函数的调用与返回过程,从“后调用的函数先返回”这一特点看,最接近的数据结构是( )。

{{ select(10) }}

  • A. 队列
  • B. 栈
  • C. 哈希表
  • D. 并查集