第 1 题
数据结构若栈S1 中保存整数,栈S2 中保存运算符,函数F()依次执行下述各步操作( )。
(1)从S1中依次弹出两个操作数a 和b;
(2)从S2中弹出一个运算符op:
(3)执行相应的运算b op a;
(4)将运算结果压入S1中。
假定S1中的操作数依次是 5, 8, 3, 2(2 在栈顶),S2 中的运算符依次是*, –, +(+在栈顶)。调用 3次F()后,S1栈顶保存的值是( )。
A. -15
B. 15
C. -20
D. 20
查看答案与解析
参考答案:B
题目详解:
首先,我们需要明确栈 和栈 的初始状态以及函数 的执行步骤。
初始状态:
- 栈 中的操作数依次是 ( 在栈顶),即栈从顶到底为 。
- 栈 中的运算符依次是 ( 在栈顶),即栈从顶到底为 。
函数 的执行步骤如下:
- 从 中依次弹出两个操作数 和 ( 是第一个弹出的, 是第二个弹出的)。
- 从 中弹出一个运算符 。
- 执行相应的运算 。
- 将运算结果压入 中。
调用 次 的过程如下:
第一次调用 :
- 弹出 和 。
- 弹出 。
- 计算 。
- 将 压入 。
此时 的状态为 (从顶到底)。
的状态为 。
第二次调用 :
- 弹出 和 。
- 弹出 。
- 计算 。
- 将 压入 。
此时 的状态为 (从顶到底)。
的状态为 。
第三次调用 :
- 弹出 和 。
- 弹出 。
- 计算 。
- 将 压入 。
此时 的状态为 (从顶到底)。
的状态为空。
调用 次 后, 栈顶保存的值是 。
正确答案:B







