为什么postfix(rpn)符号比前缀更常用?

Ama*_*tya 6 algorithm calculator postfix-notation polish-notation

通过使用我的意思是它在许多计算器如HP35-中使用

我的猜测(和混淆)是 -

  1. postfix实际上是更高效的内存 - (所以在这里发表评论).(混淆 - 两者的评估算法与堆栈类似)
  2. 当时计算器中的键盘输入类型(混淆 - 这应该不重要,因为它只取决于第一个或最后一个给定的运算符的顺序)

可以问这个问题的另一种方式是后缀表示法优于前缀的优点是什么?
任何人都可以开导我吗?

ang*_*son 5

一方面,实施评估更为容易。

使用前缀,如果您先推一个运算符,然后再推运算符,则您需要对运算符何时具有其所有运算数有一定的了解。基本上,您需要跟踪所推动的运算符何时具有其所有操作数,以便可以展开堆栈并求值。

由于复杂的表达式可能最终会在堆栈上包含许多运算符,因此您需要具有一个可以处理该表达式的数据结构。

例如,此表达式:- + 10 20 + 30 40-同时+在堆栈上有一个和一个,对于每个表达式,您都需要知道是否有可用的操作数。

使用后缀,当您压入一个运算符时,操作数已经(应该)在堆栈上,只需弹出操作数并求值即可。您只需要一个可以处理操作数的堆栈,而无需其他数据结构。

  • 看看如果我从右到左评估前缀符号,我不需要堆栈中的任何运算符。从右开始, - + 10 20 (+ 30 40) 将大括号指示的部分计算为 - + 10 20 70 。现在推动 70 堆叠。并评估 -(+ 10 20) 70 而 70 在堆栈上,到 - 30 70 。最后将它的其余部分评估为 -40。 (2认同)