计算机的工作本质就是做数学运算,计算机喜欢做后缀运算,而我们自己却是喜欢做中缀运算,
所以计算机就会自动将我们的中缀运算转化成后缀运算,现在我们自己通过栈的应用来实现以下这个功能。
例如:5+4=>54+
1+2*3=>123*+
在转化之前我们得知道计算机是如何做的转化,下面我们就来看一下这个算法
1遍历中缀表达式的数字的符号,对于数字,直接输出。
2对于符号:左括号:进栈
运算符号:与栈顶符号进行优先级比较,若栈顶符号优先级低,则符合进栈(默认栈顶若是左括号。左括号优先级最低)。若栈顶符号优先级不低,将栈顶符号弹出并输出,之后进栈。
右括号:将栈顶符号弹出并输出,直到匹配左括号。
3遍历结束:将栈中的所有符号弹出并输出。
在转化之后计算机又是如何计算后缀的表达式的呢?下面看一下算法
1遍历后缀表达式中的数字和符号
2对于数字:进栈
对于符号:从栈中弹出右操作数,再从栈中弹出左操作数,根据符号进行运算,将运算结果压入栈中。
3遍历结束:栈中的唯一数字为计算结果。