题14

题目

【2014 统考真题】假设栈初始为空,将中缀表达式 a/b + (c * d - e*f)/g 转换为等价的后缀表达式的过程中,当扫描到 f 时,栈中的元素依次是 ( ).
A. + (*-
B. + (-*
C. / + (*-
D. / + - *

分析

|475

B
【另解】采用手算方法,得出中缀式 a/b + (c*d - e*f)/g 对应的后缀式为 ab/cd*ef*-g/+ 。 中缀表达式转后缀表达式时,操作数都直接输出,因此操作数的顺序是固定的。扫描到 f 时,在后缀表达式 f 后面的运算符要么还未入栈,要么还在栈中,需要结合中缀式来判断, f 后面依次出栈的运算符为 * - / + , / 在中缀表达式 f 之后,此时还未入栈,因此栈中的运算符 (从栈底到栈顶) 为 + - * ; 此外,已入栈的界限符 (此时还未消解,因此 ( 也还在栈中,栈中的元素依次是 + ( - *