表达式求值
算法思路:
1.设立操作数栈和运算符栈;
2.设表达式的结束符为“#”,预设运算符的栈底为“#”
3.若当前字符为操作数,则直接压入操作数栈
4.若当前字符是运算符,且运算符额优先级高于栈顶运算符则进栈,否则,从操作数栈中弹出运算符栈的栈顶运算符,经计算后将结果压入操作数栈。
1.设立操作数栈和运算符栈;
2.运算示例
3*2+5# ps表达式输入的时候必须要在最后带有一个#表示输入结束 有点尴尬😂我只在最后面的需要使用的时候才加入#
1.操作数直接入栈
2.运算符需要判断和上其他运算符的优先级,优先级高的直接入栈
3.操作数直接入栈
4.当前运算符优先级低则弹出操作数栈顶的两位数和运算符的栈顶的运算符计算后将结果压入操作数栈运算符入栈
5.操作数直接入栈
6. # 入栈是时代表运算结束输出结果
前中后缀表达式
举例:
中缀表达式:1+(2+3)4-5
前缀表达式:-+1+2345
后缀表达式:123+4*+5-
中缀表达式
中缀表达式就是我们平时常用的表达式 ,对人而言容易理解,而对于计算机而言不太容易理解。
前缀表达式
前缀表达式的运算符位于两个相应操作数之间,前缀表达式又被称为前缀记法或波兰式
计算机处理表达式
中缀表达式向前缀表达式转换(当时我考数据结构的时候这个是重难点)
后缀表达式和前缀表达式类似
后缀表达式的运算符前跟着两个操作数, 和前缀表达式极其类似,此处不做赘述