我一直在查看维基页面:http://en.wikipedia.org/wiki/Shunting-yard_algorithm
我已经使用代码示例构建了第一部分,基本上我目前可以转:
3 + 4 * 2/( 1 - 5 ) ^ 2 ^ 3
转换为 3 4 2 * 1 5 − 2 3 ^ ^/+
但是我不知道怎么用3 4 2 * 1 5 − 2 3 ^ ^/+
得到3.00012207
wiki 上的示例代码和解释对我来说没有任何意义。
有人可以解释一下如何评估 3 4 2 * 1 5 − 2 3 ^ ^/+
并得出答案。提前致谢。我不需要代码示例,只需要很好的解释或示例的分解。
这并不重要,但我正在使用 .net C#。
最佳答案
调车场算法的目的是它的输出在Reverse Polish Notation中。 ,这很容易评估:
- 创建一个堆栈来保存值
- 当还有逆波兰符号输入时:
- 阅读一个输入项
- 如果是一个值,就把它压入栈中
- 否则为操作;从堆栈中弹出值,对这些值执行操作,将结果推回
- 当没有剩余输入时,如果表达式的格式正确,则堆栈中应该只有一个值;这是评估结果。
关于algorithm - 难以理解如何处理调车场算法的输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8344460/