已知操作符包括‘ + ’、‘ − ’、‘ ∗ ’、‘ / ’、‘ ( ’ 和 ‘ ) ’。将中缀表达式 a+b−a∗((c+d)/e−f)+g 转换为等价的后缀表达式 ab+acd+e/f−∗−g+ 时,用栈来存放暂时还不能确定运算次序的操作符,若栈初始为空,则转换过程中同时保存在栈中的操作符的最大个数是( )。
A. 5
B. 7
C. 8
D. 11
方法一:模拟
本题考察中缀表...
用户登录可进行刷题及查看答案
本题考察中缀表达式转后缀表达式,需要利用栈作为辅助。
转换过程中同时保存在栈中的操作符的最大个数是 5 。
本题选A。
方法二:观察表达式
其实我们没有必要老老实实模拟整个流程,只需要观察表达式即可,保存在栈中的操作符数量最大,则未计算的操作数嵌套最深,即最内层括号中最后一个操作数,很容易找到这个操作数 d ,观察前面与 d 相关的操作,也是没有能够输出的操作,这些操作都暂存在栈中,我们依次分析:
为了区别外层括号和内层括号,外层括号加粗。
受 d 直接或间接影响未能输出的操作符在中缀表达式中依次为 −∗((+ ,越靠近栈顶的优先级越高,总计 5 个操作符。
本题选A
登录后提交答案
暂无评论,来抢沙发