我正在尝试从互联网上了解从Infix到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 +-
答案 0 :(得分:0)
如果要检查输出,可以自己计算表达式。只需打开编辑器,然后将一行作为堆栈:
答案1: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
看起来像是错了。
您可以自己做第二个。这也是错误的。
从infix到postfix的转换也很容易手动完成。您只需按照正确的顺序进行运算符,将arg op arg op arg...
更改为arg arg op arg op...
,在这里,我使用[]
来保存已经转换的子表达式:
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+]