问题 单项选择题

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

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

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

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

答案

参考答案:A

解析:(33)~(34)

[分析]: 对算术表达式(a+b*(a+b))/c)+(a+b)进行括号检查时,栈操作的顺序为: 入栈,入栈,出栈,出栈,出栈,…… 当需要进行第三次出栈操作时,发现栈已空,已不可能完成出栈操作。 对算术表达式((a+b/(a+b)-c/a)/b进行括号检查时,栈操作的顺序为: 入栈,入栈,入栈,出栈,出栈 第1次出栈操作取出的是第3次刚入栈的“(”,第2次出栈操作取出的是第2次入栈的“(”。直到表达式检查结束,第1次入栈的“(”仍没有取出,因此,表达式中的括号并不匹配。 本例是栈的重要应用之例。编译程序中常用栈来检查语句(或程序)中的括号是否匹配。 在日常生活中,当人们进入一个复杂的大院时,需要多次进门,多次出门。每次出门,总是退出最近进门的院。在同一位置堆积货物时,总是先取最近刚放上的货。所以,栈的应用也是比较常见的。可以用这种日常生活中的例子来形象地理解栈的操作。

单项选择题
填空题