中缀转后缀
从左到右扫描这个中缀表达式,如果遇到操作数,就直接写出来;如果遇到运算符,就将其入栈。
入栈之前,首先将当前运算符与栈顶运算符比较优先级,如果当前运算符优先级小于等于栈顶运算符的优先级,则将栈顶运算符出栈,并写入结果表达式中,(这是一个循环的过程),然后继续和新的栈顶运算符比较,这样一直进行下去,直到比较结果为大于,则将扫描到的运算符入栈。栈空时,直接将运算符入栈。
对于表达式中含有括号的情况,当遇到左括号,直接入栈。当栈顶为左括号时,所有扫描到的运算符都入栈。当扫描到右括号时,则进行一系列出栈操作,将当前栈中从栈顶到左括号的元素全部出栈,并将其写入结果表达式中(括号除外,出栈的括号直接扔掉)。
最后,当扫描完表达式中所有字符时,如果栈中还有运算符,则将其全部出栈,并写入结果表达式中。