数据结构---栈--逆波兰算法

逆波兰:不需要括号的后缀表示法

例:9+( 3 - 1 )+10  ÷ 2

后缀表示法:“ 9 3 1 - 3 * + 10 2  /+”

程序表示的思路规则:

       从左向右遍历表达式的每个数字和符号,遇到数字就进栈,遇到符号,就将处于栈顶的两个数字出栈,进行运算,运算结果进栈,一直获得最终的结果。

1,初始化一个空栈。

2,后缀表达式中的前三个数字进栈。

 

数据结构---栈--逆波兰算法_第1张图片

3,接下来是“-”,将栈中的”1“出栈作为减数,“3”作为被减数,运算结果进栈。

4,接着数字“3”进栈。

数据结构---栈--逆波兰算法_第2张图片

5,后面是“*”,将3和2 出栈,相乘结果进栈。

6,下面是“+”,所以6和9出栈,相加得15出栈。

数据结构---栈--逆波兰算法_第3张图片

7,接着10和2进栈。

8,接下来就是符号“/”,10与2相除,得到5进栈。

数据结构---栈--逆波兰算法_第4张图片

9,最后一个符号是“+”,得20进栈。

10,结果是20 ,出栈,栈为空。

数据结构---栈--逆波兰算法_第5张图片

 

 

 

 

 

 

 

你可能感兴趣的:(数据结构)