问题 单项选择题

可以用栈来检查算术表达式中的括号是否匹配。分析算术表达式时,初始栈为空,从左到右扫描字符,遇到字符“(”就将其入栈,遇到“)”就执行出栈操作。对算术表达式“((a+b/ (a+b) )-c/a))/b”,检查时, (42)

A.栈为空却要进行出栈操作

B.表达式处理已结束,栈中仍留下有字符“(”

C.栈已满却要进行入栈操作

D.表达式处理已结束,栈中仍留下有字符“)”

答案

参考答案:A

解析:[要点解析] 本例是栈的重要应用之例。编译程序中常用栈来检查语句(或程序)中的括号是否匹配。对算术表达式“((a+b/(a+b))-c/a))/b”进行括号检查时,栈操作的顺序为:
入栈,入栈,入栈,出栈,出栈,出栈,出栈
第1次出栈操作取出的是第3次刚入栈的“(”,第2次出栈操作取出的是第2次入栈的“(”,第3次出栈操作取出的是第1次入栈的“(”。当需要进行第4次出栈操作时,发现栈己空,已不可能完成出栈操作。

选择题
单项选择题