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

admin2009-02-15  33

问题 可以用栈来检查算术表达式中的括号是否匹配。分析算术表达式时,初始栈为空,从左到右扫描字符,遇到字符“(”就将其入栈,遇到“)”就执行出栈操作。对算术表达式“((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次出栈操作时,发现栈己空,已不可能完成出栈操作。
转载请注明原文地址:https://kaotiyun.com/show/EyjZ777K
0

相关试题推荐
最新回复(0)