algorithm - 难以理解如何处理调车场算法的输出

标签 algorithm shunting-yard postfix-notation

我一直在查看维基页面: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/

相关文章:

python - 使用 Scala 进行动态编程

python - 计算我的函数的大 o

javascript - 如何修改调车场算法以使其接受一元运算符?

java - 如何正确编写evaluatePostfix函数?

java - 后缀计算器 Java

java - 需要帮助在后缀评估上实现 Java 算法

python - 我在骑士之旅的 DFS 中缺少什么?

algorithm - 查询从 U 到 V 所需的最低燃油

c# - 三角函数调车场算法

algorithm - 如何估计将中缀表达式转换为后缀表达式所需的堆栈空间