关闭

四则运算的中缀表达式和后缀表达式

143人阅读 评论(0) 收藏 举报
分类:

http://blog.csdn.net/scu_daiwei/article/details/8616020

中缀表达式:就是运算符号在数字中间的表达方式。

后缀表达式:运算符号在数字的后面出现。


1、中缀表达式向后缀表达式的转换方法:

      规则:从左到右遍历中缀表达式的每个数字和符号,若是数字就输出,即成为后缀表达式的一部分;若是符号,就判断当前符号与栈顶符号的优先级,如果是右括号或者是优先级低于栈顶符号(乘除优先加减),则栈顶元素依次出栈并输出(全部输出,如果是右括号,则到左括号输出为止),当前符号进栈,如此进行直到最终输出后缀表达式。


例子:将中缀表达式9+(3-1)*3+10/2 转换为后缀表达式

(1)输出9     栈为空

(2)“+” , “(”依次入栈      输出:9 3   ,紧接着“-”入栈     输出:9  3  1  

(3)下一个符号是“)” , 要与“(”匹配。因此栈顶符号依次出栈,直到“(”   

        输出结果为:9  3  1  -   , 栈内元素只剩下“+”

(4)紧接着是“*” , 优先级高于+ , 入栈  

(5)输出: 9  3  1  -  3

(6)“+”号优先级低于“*” , 因此站内元素依次出栈, 输出: 9  3  1 - 3 * +  , 再将此时的“+”入栈  

(7)输出: 9  3 1  -   3  *  +  10 

(8)“/”入栈      

(9)输出: 9  3  1  -  3 *  +  10  2 

(10)栈内所有符号出栈:  9   3   1  -  3  *  +  10  2  /  +

最后得到后缀表达式为:9   3   1  -  3  *  +  10  2  /  +



2、计算后缀表达式:

      规则:从左到右依次遍历后缀表达式,遇到数字就进栈,遇到符号就将栈顶的两个元素进行该符号的操作。注意:栈顶的元素是符号后的数字,栈顶元素的前一个元素是运算符的前面的数字。



例子:计算后缀表达式“9   3   1  -  3  * + 10 2 / + ”的值

(1)9 , 3  ,  1 入栈  , 栈内元素: 9   3   1 

(2)遇到符号“-” , 将栈顶元素出栈,按照顺序应该是: 3 - 1,得到结果2, 入栈,栈内元素为 : 9   2

(3)3 入栈, 栈内元素: 9  2  3 

(4)“*” , 2,3 出栈,   2*3 = 6 ,  6 进栈,栈内元素: 9  6

(5)“+” , 9,6出栈,9+6 = 15, 15入栈,栈内元素:15

(6)10, 2 依次入栈,栈内元素:15, 10  , 2

(7)“/” , 10 , 2 依次出栈,  10/2 = 5 , 5 入栈 ,  栈内元素: 15   5 

(8)“+” , 15  5 依次出栈  , 15 + 5 = 20  , 20 入栈  , 栈内元素: 20

(9)得到结果  20 


以上就是关于中缀表达式与后缀表达式的一些内容。


0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:197754次
    • 积分:4812
    • 等级:
    • 排名:第5971名
    • 原创:227篇
    • 转载:380篇
    • 译文:1篇
    • 评论:93条
    博客专栏
    最新评论