方法1
将中缀表达式画括号,然后将符号移到对应括号外,去掉所有括号
如:a/b+(c*d-e*f)/g
- ((a/b) + (((c*d) - (e*f))/g))
- ab/cd*ef*-g/+
方法2
将中缀表达式转换为后缀表达式的算法思想如下:
初始化一个 操作符栈,从左向右开始扫描中缀表达式;
- 遇到数字时,加入后缀表达式;
- 遇到运算符时:
- 若为
(,入栈; - 若为
),则依次把栈中的运算符加入后缀表达式中,直到出现(,从栈中删除(; - 若为除括号外的其他运算符
- 当其 优先级 高于栈顶运算符时,直接入栈;
- 否则从栈顶开始,依次弹出 优先级 高于或等于当前运算符的运算符,直到遇到 优先级 更低的运算符或左括号为止。
- 若为
