中缀表达式
中缀表达式没啥好讲的,就是我们最常见到的5*3+1这种算数式
后缀表达式
具体来说,就是把中缀表达式按一些特定的规则改成一个新的式子,来看看怎么改,先准备一个栈,我们准备把2+(3*4+2)/5这个式子转成后缀表达式。
首先从前往后读入数据,如果是数字,那么直接输出,如果是运算符,那么就查看栈顶的元素是否优先级小于该运算符,如小于,则直接入栈(栈为空的时候也直接入栈),栈顶元素优先级大于或等于该运算符的话就输出栈顶运算符并将其弹出栈,继续上述步骤直到栈顶的元素优先级小于该运算符或栈空或栈顶元素为左括号,那么就将该运算符压入栈中,如果该元素为左括号,那么压入栈中,如果为右括号,那么就直接弹出栈里的元素直到左括号弹出,注意括号不输出,遍历完了就完事了。
来转转看,首先读到2,那么输出2,读到+,那么入栈,读到'(','('入栈,读到3,输出3,读到*,入栈,读到4,输出,读到+,弹出*,输出*,压入+,读到2,输出2,读到')',那么弹出+,输出+,弹出'(',读到/,压入/,读到5,输出5,然后把栈里元素全输出就完事了,也就是输出/和+,所以表达式2+(3*4+2)/5的后缀表达式为:2 3 4 * 2+5/+。
讲完了