栈的应用2---后缀表达式
计算机是如何基于后缀表达式计算的?
eg: 931-5*+
对于数字:进栈
对于符号:
从栈中弹出右操作数;
从栈中弹出做操作数;
根据符号进行运算;
将运行结果压入栈中;
遍历结束:栈中唯一数字为计算结果;
中缀转后缀算法:
对于数字直接输出;
对于符号:
左括号:进栈;
运算符号(分两种情况:) 与栈顶比较优先级
若栈顶符号优先级低:此时符号进栈(默认栈顶若是做括号,左括号优先级最低);
若栈顶符号优先级不低:将栈顶符号弹出并输出,之后进栈。
右括号: 将栈顶符号弹出并输出,知道匹配到左括号;
遍历结束:
将战中的所有符号弹出并输出。