Я пытаюсь сделать конвертер из постфикса в инфиксную запись и мне нужна помощь. Уже существует вопрос о преобразовании из инфикса в постфикс , который приводит пример, который мне не удается преобразовать обратно. (Примечание: там отсутствует знак минус!)
Ниже приведен вывод моего конвертера, где 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: Постфикс для Infix , также через Группы Google
- Алгоритм шунтирования (C, Python, Perl) с поддержкой унарного оператора в LiteratePrograms