问题
单项选择题
已知操作符包括“+”、“-”、“*”、“/”、“(”和“)”。将中缀表达式a+b-a*((c+d)/e-f)+g转换为等价的后缀表达式ab+acd+e/f-*-g+时,用栈来存放暂时还不能确定运算次序的操作符。若栈初始时为空,则转换过程中同时保存在栈中的操作符的最大个数是
A.5
B.7
C.8
D.11
答案
参考答案:A
解析:根据题目要求,栈中只存储操作符“+”,“-”,“*”,“/”,“(”和“)”,并不存储字母,这一点一定要看清楚。根据中缀表达式a+b-a*((e+d)/e-f)+g,可以利用栈将其转换为后缀表达式ab+acd+e/f-*-g+,在转换过程中,栈中的操作符最多有5个。这种情况出现在第二个“+”号入栈后,栈中的操作符分别为:“-”,“*”,“(”,“(”,“+”。