【发布时间】:2016-10-17 11:50:43
【问题描述】:
我在 google 上找到了很多算法,但是我找不到将中缀转换为后缀的可运行算法。如何在 C# 上将中缀方程转换为后缀方程?请帮忙...
【问题讨论】:
标签: c# equation postfix-notation infix-notation
我在 google 上找到了很多算法,但是我找不到将中缀转换为后缀的可运行算法。如何在 C# 上将中缀方程转换为后缀方程?请帮忙...
【问题讨论】:
标签: c# equation postfix-notation infix-notation
这是一个学习编程的好小项目。有两部分:将代码解析成树,然后将树打印为后缀。每个树节点是一个有两个孩子的算子:4 + (5/6) 有+ 作为根节点,孩子是 4 和 5/6。当您深入查看5/6 节点时,您会发现一个父节点有两个子节点:父节点是/,子节点是5 和6。
解析是最难的部分。要解析表达式,请查看需要解析的内容,找到运算符,并注意运算符的左侧和右侧。运算符是节点,它有两个子节点:Parse(stuff to the left) 和 Parse(stuff to the right)。您需要特别注意减号(它是一元运算符,因此不是严格的中缀)。我建议将减号视为一种特殊情况:-4 应该被解析为-4,而不是带有一个子节点4 的减号节点。解析方程时,所有内部节点都应该是运算符,所有叶节点都是数字。
解析后,只需打印即可。对于根节点,print(node) 将打印“(”,左孩子(递归打印),右孩子(递归打印),运算符,然后用“)”关闭表达式(节点)。
我没有方便的算法链接,但如果你自己实现它,你实际上会增长很多。
【讨论】: