中缀表达式
其实就是我们平时使用的标椎四则运算表达式,因为所有符号都在两个数字之间,例如:9+(3-1)*3+10/2
中缀表达式转后缀表达式规则:
从左到右遍历中缀表达式的每个数字和符号,若是数字就输出,即成为后缀表达式的一部分;
若是加减乘除符号,栈为空或栈顶为左括号则直接将符号入栈,栈不为空且当前符号优先级高于栈顶元素,则将该符号入栈;优先级不高于栈顶元素则将栈顶元素出栈并继续与栈顶元素比较;
若是左括号则直接入栈,若是右括号则依次输出栈顶符号并出栈直到遇到与之匹配的左括号,再将左括号出栈;
遍历完毕将栈中符号依次出栈。
中缀转后缀
中缀表达式“9+(3-1)*3+10/2”转化为后缀表达式“9 3 1 - 3 * + 10 2 / +”:
用栈储存符号,用队列储存输出的后缀表达式
栈中元素:空
队列元素:空
1. 遍历到 9:是数字则放入输出队列,此时:
栈中元素:空
队列元素:9