单选题 利用栈求表达式的值时,设立运算数栈s。假设栈S只有两个存储单元,在下列表达式中,不发生溢出的是______。
  • A.A-B*(C-D)
  • B.(A-B)*C-D
  • C.(A-B*C)-D
  • D.(A-B)*(C-D)
【正确答案】 B
【答案解析】[解析] 利用栈求表达式的值时,需要设立运算符栈和运算数栈,下面仅举一例。例如,求2×(5-3)+6/2的过程如下表所示。
当前字符 运算符栈 运算数栈 说明
2 2
× * 2
( *( 2
5 *( 2 5
- *(- 2 5
3 *(- 2 5 3
) 2 2 “-”出栈
+ + 4 “*”出栈
6 + 4 6
/ +/ 4 6
2 +/ 4 6 2
+ 4 3 “/”出栈
7 “+”出栈
从上述的计算过程中,考生可以自行对A、B、C、D选项进行练习,运算数栈S的大小分别至少为4、2、3、3,只有B选项满足条件。