Обратная польская запись

 

Алгоритм:

Пока строка содержит символы для чтения, читаем очередной символ. Далее рассматриваются варианты:
1) Если символ не является символом функции или скобкой, добавляем его к выходной строке.
2)

  1. Если встретили символ функции, помещаем его в стек.
  2. Если встретили символ функции и при этом стек не пустой, выталкиваем в выходную строку все символы функции, пока не встретим символ, имеющий больший приоритет или открывающую скобку.
  3. Если символ является закрывающей скобкой:
    Выталкиваем элементы из стека в выходную строку, пока верхним элементом стека не станет открывающая скобка. Если после этого на вершине стека находится символ функции, выталкиваем его в выходную строку.
  4. Если символ является открывающей скобкой, помещаем его в стек.

Код на Ideone.

Related Images:

2 thoughts on “Обратная польская запись

  1. Задача ошибочно помещена на этот сайт вместо java.mazurok.com. Проверена очно, есть существенные недоработки — некорректная обработка скобок, совершенно лишняя переменная st_len, тем не менее результат = 10 баллов.

Добавить комментарий