我应该写一个以算术表达式作为输入的程序。程序将输出表达式是否包含匹配的分组符号,如果表达式平衡,它将计算表达式结果。

例如,算术表达式
{25 + (3 – 6) * 8}是平衡的,其结果等于1
7 + 8 * 2是平衡的,其结果等于23

但是,表达式5 + {(13 + 7) / 8 - 2 * 9不包含匹配的分组符号,因此我们将不计算其结果。

使用的最佳数据结构(链接列表,堆栈等)是什么?

最佳答案

使用堆栈。最后一个打开的括号应该是第一个被关闭的括号。

从左到右开始表达。

继续将左括号插入堆栈。

当找到一个右括号时,请检查它是否等于堆栈的顶部(最后打开的应该首先关闭),如果是,则将其弹出。如果不是,则表达式不平衡。

如果最后的堆栈为空,则表达式是平衡的。

08-25 10:24