描述:读入一个只包含 +, -, *, / 的非负整数计算表达式,计算该表达式的值。
输出:计算结果,保留两位小数。
程序任务分为两部分:
一。将输入的中缀表达式转换为后缀表达式,实现过程:
1.准备队列保存后缀表达式(计算后缀表达式时,需要从队首读取数据)
准备栈保存计算符,使用找调整计算顺序
2.读输入字符串,如果是数字,直接入后缀表达式队列;
如果是计算符号,当计算符号栈为空或当前符号优先级大于栈顶符号优先级,直接入栈。否则依次弹出栈顶符号入后缀表达式队列。
如果是(直接入栈,如果是)弹出符号栈中符号入后缀表达式队列,直到((不入队)
3.反复2过程直到读完所有字符串,若符号栈不为空,弹出其中所有元素入队
二。计算后缀表达式:
计算栈
1.弹出队列元素,如果是数字,直接入栈,如果是操作符号,弹出栈顶两个数字计算。
P.S.第一个弹出数字是第二个数字,第二个弹出数字是第一个数字。
|--------|
|temp2|
|--------|
来源:博客园
作者:水中飞云
链接:https://www.cnblogs.com/a-cloud---/p/11483901.html