栈的应用——四则运算表达式求值
1.后缀(逆波兰)表示法定义
栈的现实应用有很多,数学表达式的求值就是其中一个,数学表达式中存在先乘除再加减,从左到右,从括号内到括号外的运算规则。而后缀表达法是一种不需要括号的表示方法,也称之为逆波兰表示。
举例:9+(3-1)×3+10/2用后缀表达式为9 3 1-3×+10 2/+
2.后缀表达式计算结果
后缀表达式:9 3 1-3 ×+10 2/+
规则:从左到右遍历表达式的每个数字和符号,遇到数字就进栈,遇到符号,就将处于栈顶的两个数字出栈,进行运算,运算结果进栈,一直到获得最终结果。
(1)初始化一个空栈。
(2)后缀表达式的前三个是数字,所以9,3,1进栈。
(3)接下来时"-",所以将栈中的1出栈作为减数,3出栈作为被减数,并运算出结果为2,再将2进栈。
(4)接着是3进栈。
(5)后面时"×",栈中的3和2出栈,相乘,得到6进栈。
(6)"+",所以6和9出栈,相加得到15.
(7)10和2进栈。
(8)"/",栈顶的2和10出栈得到5。
(9)最后一个符号是"+",所以15和5出栈相加得到最后结果为20。
3.中缀表达式转后缀表达式
中缀表达式9+(3-1)×3+10/2转化为后缀表达式为9 3 1-3×+10 2/+
规则:从左到右遍历中缀表达式的每一个数字和符号,若是数字就输出,就成为后缀表达式的一部分;若是符号,则判断与其栈顶符号的优先级,是右括号或者优先级不高于栈顶符号则栈顶元素依次出栈并输出,并将当前符号进栈,一直到最终输出后缀表达式。
(1)初始化一个空栈。
(2)第一个数字是9,输出9,后面符号是"+",进栈。
(3)第三个符号是"(",左括号未配对,进栈。
(4)第四个数字是3,输出,此时表达式为9 3,接下来"-",进栈。
(5)数字1,输出,表达式为9 3 1;后面符号是")",所以此时匹配左括号,栈顶元素依次出

本文介绍了栈在四则运算表达式求值中的应用,讲解了后缀(逆波兰)表示法的定义,如何计算后缀表达式的结果,并详细展示了将中缀表达式转换为后缀表达式的步骤。
最低0.47元/天 解锁文章
744

被折叠的 条评论
为什么被折叠?



