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

2022-01-25  本文已影响0人  Jaling

问题描述

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

算法实现

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

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

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

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

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

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

回车符替换结束符

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

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

读10以外的运算数
上一篇 下一篇

猜你喜欢

热点阅读