栈中的中缀表达式转变为后缀表达式

本文详细介绍了运算符的优先级规则,比较了前缀、中缀和后缀表达式的区别,重点讲解了如何将复杂表达式转换为后缀表达式,以利用其运算顺序优势进行计算。
摘要由CSDN通过智能技术生成

运算级的优先级:+ - 的优先级相同,* / 的优先级相同,而* / 的优先级高于 + -。

前缀表达式:

①定义:运算符在操作数的前面。例如:+ 1 * 3 6 。

 

中缀表达式:

①定义:运算符位于两个操作数之间的表达式。例如1+2*3,1*6-4。

 

②运算:先乘除后加减,从左到右计算,先计算括号内,后括号外 

               需要依赖运算符的优先级,也需要处理括号。

 

 

后缀表达式(逆波兰表达式):

①定义:算数表达式中运算符在操作数的后面。例如1 2*-,3 9 5 + / 。 

 ②运算:此时已经考虑了运算符的优先级,没有括号,只有操作数和运算符,同时越放在前面的                   运算符越优先执行。

③优点:将复杂表达式转换为可以依靠简单的操作得到计算的结果的表达式。

 

例题:a+((b*c-d)/e+f*g/h)+i/j,求它的后缀表达式。

解:先把a放在postexp中,然后+入栈,(①入栈,(②入栈,b放在postexp中,*入栈,c放在postexp中。-的优先级低于*,所以*退出来,放入postexp中,-入栈,d放在postexp中,遇到①)退出-。/入栈,e放在postexp中,+入栈,f放在postexp中,*优先级高于+,直接入栈,g放在postexp中,/入栈,h放在postexp中,遇到②),退出②中所有运算符,+入栈,i放在postexp,/入栈,j放在postexp中,完毕,退栈。

答案为abc*d-e/fgh/*+ij/++

 

 

  • 7
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值