废话少说直入主题
表达式可分为三类:一、前缀表达式 二、中缀表达式 三、后缀表达式
前缀表达式又称为波兰式,对应的后缀表达式又称为逆波兰式,中缀表达式就是我们平时看到表达式,例如: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出栈,重新组成表达式即为后缀表达式