思想:
1:当输入的是运算符时
a:循环,当(栈非空and 栈顶不是开括号and栈顶运算符优先级大于等于输入的运算符优先级)时,反复操作:把栈顶元素弹出,放到后缀表达式中
b:把输入的预算符压栈
2:最后,当中缀表达式的符号序列全部读入时,若栈内仍有元素,把他们全部依次弹出,都放到后缀表达式尾部。若弹出的元素遇到开阔号时,则 说明括号不匹配,做错误处理,清栈退出。
例子:中缀表达式4*x+(2*x-a)*c=?
1从左向右按照算法思想:4写在外边*是预算符入栈,x放外边,此时遇到+号运算符,因为*大于+优先级,所以*出栈放到后缀表达式中+入栈,此时后缀表达式为:4x*
2遇到(入栈此时栈中为:+(,2写到后缀中,因为栈顶是(所以x入栈,此时栈中:+(*,x放入后缀表达式中,此时后最表达式为4x*2x
3因为栈顶*优先级高于-所以*出盏,-入栈,栈内变为+(-,后缀表达式变为4x*2x*a,接下来遇到了),于是把栈中(之后的元素依次拿出放入后缀表达式中,此时栈中变为+,后缀表达式变为:4x*2x*a-,有因为栈顶+优先级小于*所以*入栈,栈中为+*,后缀表达式变为4x*2x*a-c,遇到终止符号=,全部出盏,后缀表达式最终为4x*2x*a-c*+