Я пытаюсь сделать конвертер из постфиксной записи в инфиксную и мне нужна помощь. Уже есть вопрос о преобразовании инфикса в постфикс, который дает пример, который я не могу преобразовать обратно. (Примечание: здесь отсутствует знак минус!)
Ниже приведен вывод моего преобразователя, где 1-й «столбец» — это постфиксный ввод, 2-й — мой инфиксный вывод, а 3-й — то, что я, вероятно, должен получить (?):
2 - = - 2 =? - 2 true
1 + 2 + = + 1 + 2 =? + 1 + 2 true
1 + 2 + + = + (+ 1 + 2) =? + 1 + + 2 false
1 + 2 + + 3 - - 4 - - = - (- (+ (+ 1 + 2) - 3) - 4) =? + 1 + + 2 - - 3 - - 4 false
Как вы думаете, возможно ли решить эту проблему, или последние две строки действительно преобразованы правильно? Как бы вы написали алгоритм для решения этой задачи?
Пожалуйста, предположим, что больше операторов (не только +
и -
) могут быть установлены как унарные, так и бинарные, где унарные операторы имеют более высокий приоритет, чем бинарные.
использованная литература
- Ruby Quiz #148: Postfix to Infix, также через Группы Google
- Алгоритм маневровой станции (C, Python, Perl) с поддержкой унарных операторов в LiteratePrograms