如何在C#上将中缀方程转换为后缀方程?

时间:2016-10-17 11:50:44

标签: c# equation postfix-notation infix-notation

我在谷歌上发现了这么多算法,但我找不到将中缀转换为后缀的可运行算法。如何在C#上将中缀方程转换为后缀方程?请帮忙......

1 个答案:

答案 0 :(得分:0)

这是一个学习编程的小项目。有两部分:将代码解析为树,然后将树打印为后缀。每个树节点都是一个有两个子节点的运算符:4 + (5/6)+作为根节点,子节点是4和5/6。当您深入查看5/6节点时,您会发现父母有两个孩子:父母是/,孩子是56

解析是最难的部分。要解析表达式,请查看需要解析的内容,找到运算符,并注意运算符左侧的内容以及右侧的内容。运算符是节点,它有两个子节点:Parse(stuff to the left)Parse(stuff to the right)。您需要额外注意减号(这是一元运算符,因此不是严格的中缀)。我建议将减去视为特殊情况:-4应解析为-4,而不是具有一个子4的减号节点。解析方程时,所有内部节点都应该是运算符,所有叶节点都是数字。

在您解析之后,只需打印即可。对于根节点,print(node)将打印"(",左子节点(递归打印),右子节点(递归打印),运算符,然后关闭表达式(节点)用")"。

我没有方便的算法链接,但如果你自己实现它,你实际上会增长很多。