美文网首页
数据结构-栈的应用-表达式求值

数据结构-栈的应用-表达式求值

作者: Jaling | 来源:发表于2022-01-25 15:34 被阅读0次

    问题描述

    输入包含+、-、*、/、圆括号和正整数组成的中缀表达式,以“@”作为表达式结束符,计算该表达式的运算结果。

    算法实现

    思路:建立两个栈,一个存放运算符,一个存放运算数。依次读入每个字符串,如果为数字,则直接入栈;如果为运算符,则与字符串栈顶字符比较优先级:若栈顶字符<当前字符,则当前字符入栈并读下一字符,若栈顶字符=当前字符,则仅栈顶字符出栈并读下一字符,若栈顶字符>当前字符,则栈顶字符出栈且运算数栈出两个数字进行计算,计算结果入运算数栈(不读下一字符)。最后当运算符栈为空且运算数栈仅剩一个数字时,该数字为表达式值。

    表达式求值-以@为输入结束符

    运算符优先级采用二维数组存储,采用字符‘>’,‘<’,‘=’标示。二维数组初始化方法

    运算符优先级比较函数 运算结果计算函数

    思考1:若以回车符结束与上述有何不同?

    将@进栈、运算符优先级等处换成10或\n,其他代码保持不变。

    回车符替换结束符

    思考2:如何实现处理10以上数字的运算?

    遇到一个数字字符,则循环读取数字字符,直到下一个字符为运算符为止。

    读10以外的运算数

    相关文章

      网友评论

          本文标题:数据结构-栈的应用-表达式求值

          本文链接:https://www.haomeiwen.com/subject/kwpwhrtx.html