表达式求值算法二


1.中缀表达式转为后缀表达式(把转换后的后缀表达式存入字符数组中):
(1)初始化栈。
(2)从左至右依次读取表达式中的字符并进行如下操作,直至整个表达式读完。
①若读入字符为运算数则将其存入字符数组,继续读入下一个字符,若是,将读入字符存入数组中,否则存入“ ”。
②若读入字符为运算符且栈空,则将读入字符如栈。
③若读入字符为“+”或“-”,当栈顶元素为“(”时,则将读入字符入栈;否则,将栈顶元素弹出并将弹出元素存入数组中,并将读入
字符入栈。
④若读入字符为“”或“/”,当栈顶元素为“”或“/”时,则将栈顶元素弹出并将 弹出元素存入数组中,并将读入字符入栈;否则,将读入字符
入栈。
⑤若读入字符为“(”,则将读入字符入栈。
⑥若读入字符为“)”,则将弹出栈顶元素,并将弹出的运算符存入数组中,直到栈顶元素为“(”,此时弹出栈顶元素。
⑦若读入字符为“#”,则break。
(3)表达式字符读入完成后,如果栈中不空,则将栈中字符全部弹出,存入数组中。
2.后缀表达式求值:
(1)从左至右读取数组中的元素,并进行如下操作:
①若读入字符为运算数,则将其入栈。
②若读入字符为运算符,则分两次弹出栈顶元素作为运算数进行运算,并将运算结果入栈。
(2)读取并返回栈顶元素即为表达式的运算结果。


文章作者: irenhongyan
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 irenhongyan !
 上一篇
判断回文 判断回文
判断回文的四种方法:1.使用数组,前后对应元素进行比较。2.使用两个栈,一个栈正序存字符串,另一个栈逆序存,分别比较栈顶元素3.使用一个栈存字符串的前半部分,读取后半部分元素并将其和栈顶元素比较4.使用栈和队列,用栈存字符串的前半部分,用队
2020-05-06
下一篇 
表达式求值算法一 表达式求值算法一
1.置操作数栈为空栈,表达式起始符“#”为栈底元素。2.依次读入表达式中的每个字符并进行如下判断,直至整个表达式读完且表达式求值运算完毕(即OPTR栈的栈顶元素和当前输入的字符均为“#”)。(1)若读入字符是操作数,则将输入字符存入数组中,
2020-05-06