无法理解如何处理分流码算法的输出

Pat*_*rio 5 algorithm postfix-notation shunting-yard

我一直在看维基页面:http://en.wikipedia.org/wiki/Shunting-yard_algorithm

我已经使用代码示例来构建第一部分,基本上我现在可以转向:

3 + 4 * 2 / ( 1 - 5 ) ^ 2 ^ 33 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#.

moo*_*dow 9

分流码算法的目的是其输出采用反向波兰表示法,可以直接评估:

  • 创建一个堆栈来保存值
  • 虽然还有反向抛光符号输入:
    • 读取输入项
    • 如果是值,则将其推入堆栈
    • 否则,这是一个操作; 从堆栈中弹出值,对这些值执行操作,然后推回结果
  • 当没有输入时,如果表达式形成良好,堆栈上应该只有一个值; 这是评估结果.


hug*_*omg 8

修复后的表示法就是如何在HP计算器中进行数学运算.

保持一个堆栈,每当你得到一个数字添加到顶部.每当您让操作员从顶部消耗输入,然后将结果添加到顶部

token stack
      *empty*
 3    3         //push numbers...
 4    3 4
 2    3 4 2
 *    3 8       //remove 4 and 2, add 4*2=8
 1    3 8 1
 5    3 8 1 5
 -    3 8 -4
 2    3 8 -4 2
 3    3 8 -4 2 3
 ^    3 8 -4 8
 ...    ...
Run Code Online (Sandbox Code Playgroud)