上篇博客我们已经将中缀表达式正确的转换为后缀表达式了。
我们在这块得考虑到数学运算中的除法(除0)的情况,若是浮点运算,则应避免代码中直接与 0 做相等比较。
具体到代码就是:
QString QCalculatorDec::calculate(QQueue<QString>& exp)
{
QString ret = "Error";
QStack<QString> stack;
while( !exp.isEmpty() )
{
QString e = exp.dequeue();
那么后缀表达式是如何进行计算的呢?这时就需要比那里后缀表达式中的数字和运算符了。如果当前元素为运算符:1. 从栈中弹出右操作数;2. 从栈中弹出左操作数;3. 根据符号进行运算;4. 将运算结果压入栈中。当遍历结束时,再将栈中的唯一数字为运算结果。
用伪码描述出来就是:
我们在这块得考虑到数学运算中的除法(除0)的情况,若是浮点运算,则应避免代码中直接与 0 做相等比较。
具体到代码就是:
QString QCalculatorDec::calculate(QQueue<QString>& exp)
{
QString ret = "Error";
QStack<QString> stack;
while( !exp.isEmpty() )
{
QString e = exp.dequeue();