第 3 题
将中缀表达式转换为等价的后缀表达式的过程中要利用堆栈保存运算符。对于中缀表达式 ,当扫描到操作数 时,堆栈中保存的运算符依次是( )。
A. -×
B. -(×
C. -+
D. -(+
[tag_link]
正确答案:A
中缀表达式转换为后缀表达式时,使用堆栈暂存运算符。 对于表达式
,从左到右扫描:
- 扫描到操作数 :直接输出,堆栈为空。 >
- 扫描到运算符 :堆栈为空,将 压栈。 >
- 扫描到左括号 :直接压栈,堆栈为 (栈底到栈顶,下同)。 >
- 扫描到操作数 :输出,堆栈不变。 >
- 扫描到运算符 :栈顶为左括号,直接压栈,堆栈为 。 >
- 扫描到操作数 :输出,堆栈不变。 >
- 扫描到右括号 :弹出栈顶运算符 并输出,接着弹出左括号 丢弃,堆栈变为 。 >
- 扫描到运算符 :比较优先级, 高于栈顶 ,因此压栈,堆栈变为 。 >
- 扫描到操作数 :此时堆栈保持不变,运算符依次为 和 。 >
对应选项,A 为 ,符合结果。 > 其他选项中,B、C、D 的运算符组合与扫描过程中的实际堆栈状态不符。 >