标签:family 结束 lan ext 通过 参考 运算符 size htm
中缀表达式转后缀表达式:
思路:维护一个队列和一个栈。然后按下面过程进行处理:
①、当队列元素为数字时
·直接保存到队列
②、当队列元素为加减时
·判断栈顶的运算优先级,由于+-的优先级小于等于所有运算符
·所以循环取出栈顶的运算符并入队列
·直到遇到栈为空、遇到左括号时才停止,最后再将当前+-入栈
③、当队列元素为乘除时
·判断栈顶的运算优先级,由于*/的优先级只小于等于*/
·所以循环判断栈顶运算符,如果栈顶运算符是*/,则取出并入队
·直到遇到栈为空、遇到左括号、遇到+-时才停止,最后再将当前*/入栈
④、当前队列元素为左括号时
·直接入栈
⑥、当前队列元素为右括号时
·循环将栈顶运算符出栈并入队列
·直到遇到左括号停止,并将左括号出栈弃掉.
⑦、当队列元素判断结束后
·判断栈是否为空,如果不为空,则将栈存储的运算符出栈并入队列
后缀表达式计算:
通过逆波兰表达式计算后缀表达式,思路如下
[注]:波兰式是在通常的表达式中,二元运算符总是置于与之相关的两个运算对象之前,所以,这种表示法也称为前缀表达式。
①、遇到数字时
·入栈
②、遇到运算符时
·取出栈顶的两个数,然后进行计算(有除法时,需要判断除数是否为0)
·计算完成后,再将结果入栈
③、当后缀表达式队列对空时
·表示遍历结束,此时栈中若只剩下唯一数字,则算出了结果答案.
标签:family 结束 lan ext 通过 参考 运算符 size htm
原文地址:https://www.cnblogs.com/solvit/p/9744249.html