关于转换答案中缀到后缀的困惑

confusion about conversion answer infix to postfix

我正在尝试从互联网上了解中缀到后缀的转换 我遇到了 2 个来源,随后我对同一个中缀表达式得到了不同的答案:

a/b^c+d*e/f-g+h

我想知道哪种算法是正确的

来源 1:https://youtu.be/IAxCAbcqQFA?t=803 如您所见,答案是

abc^/de*+f/g-h+

来源 2:https://raj457036.github.io/Simple-Tools/prefixAndPostfixConvertor.html

答案是

abc^/de*+f/gh+-

如果你想检查输出,你可以自己计算表达式。只需打开一个编辑器并使用一行作为堆栈:

答案一:abc^/de*+f/g-h+

a:  a
b:  a  b
c:  a  b  c
^:  a  b^c
/:  a/b^c
d:  a/b^c  d
e:  a/b^c  d  e
*:  a/b^c  d*e
+:  a/b^c+d*e
f:  a/b^c+d*e  f
/:  (a/b^c+d*e)/f
g:  (a/b^c+d*e)/f  g
-:  (a/b^c+d*e)/f-g
h:  (a/b^c+d*e)/f-g  h
+:  (a/b^c+d*e)/f-g+h

看来是错了。

你可以自己做第二个。也是错的。

从中缀到后缀的转换也很容易手动完成。您只需按正确的顺序执行运算符,将 arg op arg op arg... 更改为 arg arg op arg op... 这里我使用 [] 来保存 already-converted 子表达式:

a/b^c+d*e/f-g+h
a/[bc^]+d*e/f-g+h
[abc^/]+[de*f/]-g+h
[abc^/de*f/+g-h+]