我需要一种算法,使用 stack 在 infix 表达式中插入括号。 例如:
输入:12 / c + c * p ^(8 + 9)
输出:((12 / c)+(c *(p ^(8 + 9))))
我只需要算法,如果我们通过前缀或 postfix 达到输出就可以了。但输出应该是精确的例子。带有完整括号的中缀表达式。
如果有人可以提供伪代码或一步一步的示例,我将不胜感激。
由于
答案 0 :(得分:2)
我之前通过反向抛光符号(RPN)实现了这一点。首先,您需要构建表达式的后缀版本。您可以使用the shunting-yard algorithm。其次,您需要“评估”(象征性地)刚刚创建的后缀表达式。 The RPN evaluation algorithm这样做。
答案 1 :(得分:0)
1 - 转换为postfix
2 - 阅读后缀表达式
3 - 关于后缀表达式的循环...如果字符是操作数,则在堆栈中推送其他如果运算符...在堆栈中弹出前两个并将这两个插入括号中当前字符的运算符并将其推入再次叠加