中缀表达式的转换

来源:互联网 发布:淘宝怎么帮朋友代付款 编辑:程序博客网 时间:2024/05/16 08:47

     废话少说直入主题

     表达式可分为三类:一、前缀表达式  二、中缀表达式  三、后缀表达式

     前缀表达式又称为波兰式,对应的后缀表达式又称为逆波兰式,中缀表达式就是我们平时看到表达式,例如:2+5=7。

 

  中缀变成前缀的步骤:

1、初始化两个栈:s1(存放数字),s2(存放运算符)

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

3、遇到数字存放到s1中,运算符存放到s2中,存放运算符的规则是:

          (1)如果s2是空的,或者栈顶是')',则直接入栈即可

          (2)当前运算符和栈顶运算符相比较,若前面的运算符大于后面的运算符,直接入栈即可

          (3)若当前运算符优先级小于栈顶运算符优先级,则把栈s2中的栈顶运算符放到s1栈中并重复(2)(3)

4、s2依次出栈,入s1栈

5、s1出栈,重新组成表达式即为前缀表达式


  中缀变成后缀的步骤:

1、初始化两个栈:s1(存放数字),s2(存放运算符)

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

3、数字存放到s1中,运算符存放到s2中,存放运算符的规则是:

          (1)如果s2是空的,或者栈顶是'(',则直接入栈即可

          (2)当前运算符和栈顶运算符相比较,大于栈顶运算符优先级,直接入栈即可

          (3)若当前运算符优先级小于等于栈顶运算符优先级,则把栈s2中的栈顶运算符放到s1栈中并重复(2)(3)

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

4、s1依次出栈,入s2栈

5、s2出栈,重新组成表达式即为后缀表达式