#P1408. 【Day4】课后A1-A2 栈与队列真题化训练(18题)
【Day4】课后A1-A2 栈与队列真题化训练(18题)
第 1 题
元素按 1,2,3,4,5,6 顺序入栈。下列哪个序列不可能成为出栈顺序?
{{ select(1) }}
- 2,1,4,3,6,5
- 3,2,5,4,6,1
- 4,3,2,1,6,5
- 4,2,3,1,6,5
第 2 题
入栈顺序为 1,2,3,4,5,6,出栈顺序为 2,4,3,6,5,1。模拟过程中栈内元素个数的最大值是多少?
{{ input(2) }}
第 3 题
将 A,B,C,D,E 依次入栈并在任意时刻出栈。为了得到出栈序列 C,B,E,D,A,第一个元素出栈前共进行了几次入栈?
{{ input(3) }}
第 4 题
固定入栈顺序为 1,2,3,4。若第一个出栈元素是 3,则第二个出栈元素不可能是( )。
{{ select(4) }}
- 1
- 2
- 4
- 以上都有可能
第 5 题
括号串 {[()]}[({})] 在扫描过程中,栈内元素个数的最大值是多少?
{{ input(5) }}
第 6 题
从左到右扫描 (([]){})()),位置从 1 开始编号。第一次能够确定不合法的是第几个字符?
{{ input(6) }}
第 7 题
后缀表达式 7 2 3 * + 8 4 / - 的值是多少?
{{ input(7) }}
第 8 题
计算后缀表达式 5 1 2 + 4 * + 3 - 时,栈内元素个数的最大值是多少?
{{ input(8) }}
第 9 题
写出程序的输出结果:
int g(int n) {
if (n <= 1) return 1;
return g(n - 2) + 1;
}
cout << g(7);
{{ input(9) }}
第 10 题
写出程序的输出结果:
stack<int> a;
queue<int> b;
for (int x = 1; x <= 7; x++) {
if (x % 3 != 0) a.push(x);
else if (!a.empty()) {
b.push(a.top());
a.pop();
}
}
while (!b.empty()) {
cout << b.front();
b.pop();
}
{{ input(10) }}
第 11 题
队列初始为 1,2,3,4,5。重复三次:取出队首 ;若 为奇数,把 加入队尾;若为偶数则不再入队。最终队列从队首到队尾是什么?(数字间用一个空格)
{{ input(11) }}
第 12 题
有任务 A,B,C,D 依次进入队列。每处理一个任务后,若它不是 D,就在队尾加入它的后继任务(A 的后继为 B,B 的后继为 C,C 的后继为 D)。处理 6 次后,队首任务是哪个字母?
{{ input(12) }}
第 13 题
长度为 12 的循环队列中,head=9, tail=4,head 指队首、tail 指下一个插入位置。队列中有几个元素?
{{ input(13) }}
第 14 题
长度为 8 且牺牲一个位置的循环队列,最多能保存多少个元素?
{{ select(14) }}
- 6
- 7
- 8
- 9
第 15 题
长度为 7 的循环队列初始 head=tail=0。依次执行:入队 3 个、出队 2 个、入队 4 个。最终 head 的值是多少?
{{ input(15) }}
第 16 题
从顶点 1 开始进行 BFS。邻接点按编号从小到大入队:1 相邻 2、3;2 相邻 1、4、5;3 相邻 1、5;4 相邻 2;5 相邻 2、3。访问顺序是什么?(数字间用一个空格)
{{ input(16) }}
第 17 题
若每个元素最多入栈一次、出栈一次,则对 个元素完成整个模拟的时间复杂度是( )。
{{ select(17) }}
第 18 题
有一个空栈。依次读入 4,1,7,2,9,3:若当前数大于栈顶则入栈,否则弹出栈顶且当前数不再处理;空栈时直接入栈。全部处理后,从栈底到栈顶依次是什么?(数字间用一个空格)
{{ input(18) }}