中缀表达式的转换

     今天,我给大家介绍一下中缀表达式、后缀表达式和前缀表达式,以及三者之间的转换。

     中缀表达式:是一个通用的算术或逻辑公式表示方法。通俗来说就是我们现在人为使用的表达式,例如3+4,而这种表达式是方便人查看的。

     前缀表达式:又称波兰式,是指运算符在运算数之前的表达式,例如+ 3 4。

     后缀表达式:又称逆波兰式,是指运算符在运算数之后的表达式,例如3 4 +。前缀表达式和后缀表达式都是利于机器查看的。

     以中缀表达式 X=A+B*(C-D)/E为例

中缀表达式转换成前缀表达式(1):

     1、初始化两个栈,栈s1用来存运算数,栈s2用来存运算符。

     2、表达式从右边开始,依次遍历表达式。

     3、遍历表达式时遇到运算数放入s1栈中,遇到运算符放入s2栈中,放置运算符的规则是:

         (1)如果s2栈中是空的,或者是‘)’,则将运算符直接放入。

         (2)如果当前运算符和s2栈中栈顶运算符相比较优先级高的话,则将运算符直接放入。

         (3)如果当前运算符的优先级低于栈顶元素优先级,则把s2栈中的栈顶运算符取出放入到s1栈中,并重复(2)(3)操作。

     4、s2依次出栈,入s1栈。

     5、s1栈中元素依次出栈,重新组成表达式。

中缀表达式转换成前缀表达式(2):

     1、遍历中缀表达式,根据中缀表达式的运算规则在每个运算符的两端加括号。

     2、所有的括号加完以后,再根据之前加括号的顺序依次将运算符挪到对应括号的前面。

     3、去除所有的括号,重新组成表达式。

 中缀表达式转换成后缀表达式(1):

    1、初始化两个栈,栈s1用来存运算数,栈s2用来存运算符。

     2、表达式从左边开始,依次遍历表达式。

     3、遍历表达式时遇到运算数放入s1栈中,遇到运算符放入s2栈中,放置运算符的规则是:

         (1)如果s2栈中是空的,或者是‘(’,则将运算符直接放入。

         (2)如果当前运算符和s2栈中栈顶运算符相比较优先级高的话,则将运算符直接放入。

         (3)如果当前运算符的优先级小于等于栈顶元素优先级,则把s2栈中的栈顶运算符取出放入到s1栈。

         (4)遇到‘)’时,运算符出栈,入s1栈,直到遇到‘(’时,丢掉‘()’

     4、s1依次出栈,入s2栈。

     5、s2栈中元素依次出栈,重新组成表达式。

 中缀表达式转化成后缀表达式(2):

     1、遍历中缀表达式,根据中缀表达式的运算规则在每个运算符的两端加括号。

     2、所有的括号加完以后,再根据之前加括号的顺序依次将运算符挪到对应括号的后面。

     3、去除所有的括号,重新组成表达式。

 

     


    








  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值