我应该写一个以算术表达式作为输入的程序。程序将输出表达式是否包含匹配的分组符号,如果表达式平衡,它将计算表达式结果。
例如,算术表达式
{25 + (3 – 6) * 8}
是平衡的,其结果等于1
。7 + 8 * 2
是平衡的,其结果等于23
。
但是,表达式5 + {(13 + 7) / 8 - 2 * 9
不包含匹配的分组符号,因此我们将不计算其结果。
使用的最佳数据结构(链接列表,堆栈等)是什么?
最佳答案
使用堆栈。最后一个打开的括号应该是第一个被关闭的括号。
从左到右开始表达。
继续将左括号插入堆栈。
当找到一个右括号时,请检查它是否等于堆栈的顶部(最后打开的应该首先关闭),如果是,则将其弹出。如果不是,则表达式不平衡。
如果最后的堆栈为空,则表达式是平衡的。