中缀算术表达式转后缀算术表达式
算法:
1 读入运算对象,直接输出
2 ( 运算符进栈
3 ) 运算符,栈内的最上一个( 以上的运算符退栈,(也退栈
4 读入运算符,进入运算栈
4.1 后进栈的运算符 > 先进栈的运算符,运算符进栈 (优先级比较)
4.2 后进栈的运算符 <= 先进栈的运算符,将栈内的运算符退栈输出,再进栈
5 # 结束符
(tj 课堂)
例
3 + 4 / ( 25 - ( 6 * 5 ) ) * 8 #
1
3 + 4 / ( 25 - ( 6 * 5 ) ) * 8 #
↑
运算符栈 输出串
3
2
3 + 4 / ( 25 - ( 6 * 5 ) ) * 8 #
↑
运算符栈 输出串
+ 3
3
3 + 4 / ( 25 - ( 6 * 5 ) ) * 8 #
↑
运算符栈 输出串
+ 3 4
4
3 + 4 / ( 25 - ( 6 * 5 ) ) * 8 #
↑
运算符栈 输出串
/
+ 3 4
5
3 + 4 / ( 25 - ( 6 * 5 ) ) * 8 #
↑
运算符栈 输出串
(
/
+ 3 4
6
3 + 4 / ( 25 - ( 6 * 5 ) ) * 8 #
↑
运算符栈 输出串
(
/
+ 3 4 25
7
3 + 4 / ( 25 - ( 6 * 5 ) ) * 8 #
↑
运算符栈 输出串
-
(
/
+ 3 4 25
8
3 + 4 / ( 25 - ( 6 * 5 ) ) * 8 #
↑
运算符栈 输出串
(
-
(
/
+ 3 4 25
9
3 + 4 / ( 25 - ( 6 * 5 ) ) * 8 #
↑
运算符栈 输出串
(
-
(
/
+ 3 4 25 6
10
3 + 4 / ( 25 - ( 6 * 5 ) ) * 8 #
↑
运算符栈 输出串
*
(
-
(
/
+ 3 4 25 6
11
3 + 4 / ( 25 - ( 6 * 5 ) ) * 8 #
↑
运算符栈 输出串
*
(
-
(
/
+ 3 4 25 6 5
12
3 + 4 / ( 25 - ( 6 * 5 ) ) * 8 #
↑
运算符栈 输出串
-
(
/
+ 3 4 25 6 5 *
12
3 + 4 / ( 25 - ( 6 * 5 ) ) * 8 #
↑
运算符栈 输出串
/
+ 3 4 25 6 5 * -
13
3 + 4 / ( 25 - ( 6 * 5 ) ) * 8 #
↑
运算符栈 输出串
*
+ 3 4 25 6 5 * - /
14
3 + 4 / ( 25 - ( 6 * 5 ) ) * 8 #
↑
运算符栈 输出串
*
+ 3 4 25 6 5 * - / 8
15
3 + 4 / ( 25 - ( 6 * 5 ) ) * 8 #
↑
运算符栈 输出串
3 4 25 6 5 * - / 8 * +
排版不好, ↑每一步移动一个字符