2016-03-04 10 views
-1

Мне нужен алгоритм для вставки круглых скобок в значение infix с использованием стек. например:Как вставить скобки в выражении Infix с помощью стека

ввода: 12/с + с * р^(8 + 9)

вывода: ((12/с) + (C * (р^(8 + 9))))

Я просто нужен алгоритм для этого, и это нормально, если мы достигаем выход через приставки или постфикс. но вывод должен быть точным в качестве примера. выражение инфикса с полными скобками.

Буду признателен, если кто-то может дать псевдокод или шаг за шагом.

Благодаря

ответ

2

я достиг этого раньше с помощью обратной польской нотации (RPN). Сначала вам нужно построить постфиксную версию выражения. Вы можете использовать the shunting-yard algorithm. Во-вторых, вам нужно «оценить» (символически) выражение postfix, которое вы только что создали. The RPN evaluation algorithm делает.

0

1 - конвертировать в суффиксом

2 - читать выражение постфикса

3 - петля на выражение постфикса ... если символ является операндом толчок в стек еще, если оператор ... поп два верхних в стек и вставьте эти два с оператором, который является текущим символом в круглых скобках, и снова вставьте его в стек.