Максим (barvizyy)
Знаток
(380)
1 месяц назад
Алгоритмом Шунта, привёл его ниже.
1. Создайте два стека: один для операторов и другой для результата.
2. Обрабатывайте выражение слева направо:
- Если встречаете операнд (число или переменную), добавьте его в выходной результат.
- Если встречаете оператор, то:
- Пока верхний элемент стека операторов имеет больший или равный приоритет, извлеките его из стека и добавьте в результат.
- Поместите текущий оператор в стек.
- Если встречаете открывающую скобку (, добавьте ее в стек.
- Если встречаете закрывающую скобку ), извлекайте операторы из стека в результат до тех пор, пока не встретите открывающую скобку. Удалите открывающую скобку из стека.
3. После обработки всего выражения: извлеките все оставшиеся операторы из стека в результат.