путаница по поводу конверсии ответа инфикса в постфикс - PullRequest
0 голосов
/ 20 мая 2019

Я пытаюсь узнать о преобразовании Infix в Postfix из Интернета. Я наткнулся на 2 источника, после которых я получаю разные ответы на одно и то же выражение:

A / B ^ C + D * E / F-G + H

Мне интересно, какой алгоритм правильный

источник 1: https://youtu.be/IAxCAbcqQFA?t=803, как вы видите здесь, ответ:

аЬс ^ / де * + ж / г-Н +

источник 2: https://raj457036.github.io/Simple-Tools/prefixAndPostfixConvertor.html

ответ

а ^ / де * + ж / GH + -

1 Ответ

0 голосов
/ 21 мая 2019

Если вы хотите проверить вывод, вы можете оценить выражение самостоятельно.Просто откройте редактор и используйте строку в качестве стека:

Ответ 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

Похоже, что это неправильно.

Вы можете сделать второе самостоятельно.Это также неправильно.

Преобразование из инфикса в постфикс также легко выполнить вручную.Вы просто делаете операторы в правильном порядке, меняя 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+]
...