前言
数据结构与算法中经常遇到中缀表达式转前缀表达式的题目,网上的教程大都很不直观,自己学的时候,也走了很多弯路,现在把一个简单易懂的算法教程分享出来。
中缀转后缀
举个例子,一个式子:
( 5 + 20 + 1 ∗ 3 ) / 14 (5+20+1*3)/14 (5+20+1∗3)/14
如何把该式子转换成后缀表达式呢?其实就是分三步:
1、按运算符优先级对所有运算符和它的运算数加括号,(原本的括号不用加)
2、把运算符移到对应的括号后
3、去掉括号
具体实现为:
1、
(
(
(
5
+
20
)
+
(
1
∗
3
)
)
/
14
)
(((5+20)+(1*3))/14)
(((5+20)+(1∗3))/14)
2、
(
(
(
520
)
+
(
13
)
∗
)
+
14
)
/
(((5 20)+(1 3)*)+14) /
(((520)+(13)∗)+14)/
3、
520
+
13
∗
+
14
/
5 20 + 1 3 *+ 14 /
520+13∗+14/