加减乘除运算:
获取后缀表达式需要一个栈,计算后缀表达式需要一个栈。
获取后缀表达式:
1,循环开始:
1.1,如果是数字,则直接输出
1.2,如果是非数字,如果堆栈为空,直接入栈
1.2.1,如果是+或- 那么遍历堆栈栈顶元素 一直输出优先级>=加减的 即输出栈顶的+-*/,
当遇到其他字符时(如左括号)或堆栈空时break
1.2.2,如果是*或/ 那么遍历堆栈栈顶元素 一直输出优先级>=乘除的 即输出栈顶的*/
当遇到其他字符时(如左括号)或堆栈空时break
1.2.3,如果该字符是右括号时,一直输出栈顶元素,直到遇见左括号为止break:
1.2.4,如果该字符是左括号时,直接放入堆栈
2,循环结束,输出堆栈中剩余数据
计算后缀表达式:
- 如果是数字,直接入栈
- 如果是运算符,弹栈两次,计算结果,结果入栈
布尔运算:
获取后缀表达式:
1,循环开始:
1.1,如果是T,F,则直接输出
1.2,如果是非T,F,如果堆栈为空,直接入栈
1.2.1,如果是或,那么遍历堆栈栈顶元素 一直输出优先级>=或的 即输出栈顶的与,或,非
当遇到其他字符时(如左括号)或堆栈空时break
1.2.2,如果是与,那么遍历堆栈栈顶元素 一直输出优先级>=与的 即输出栈顶的与,非
当遇到其他字符时(如左括号)或堆栈空时break
1.2.3,如果该字符是右括号时,一直输出栈顶元素,直到遇见左括号为止break:
1.2.4,如果该字符是左括号时,直接放入堆栈
2,循环结束,输出堆栈中剩余数据
计算后缀表达式:
- 如果是T,F,直接入栈
- 如果是双目运算符,弹栈两次,并进行运算,运算后,结果入栈
3.如果是单目运算符,弹栈一次,并进行运算,运算后,结果入栈