1.中缀表达式转为后缀表达式(把转换后的后缀表达式存入字符数组中):
(1)初始化栈。
(2)从左至右依次读取表达式中的字符并进行如下操作,直至整个表达式读完。
①若读入字符为运算数则将其存入字符数组,继续读入下一个字符,若是,将读入字符存入数组中,否则存入“ ”。
②若读入字符为运算符且栈空,则将读入字符如栈。
③若读入字符为“+”或“-”,当栈顶元素为“(”时,则将读入字符入栈;否则,将栈顶元素弹出并将弹出元素存入数组中,并将读入
字符入栈。
④若读入字符为“”或“/”,当栈顶元素为“”或“/”时,则将栈顶元素弹出并将 弹出元素存入数组中,并将读入字符入栈;否则,将读入字符
入栈。
⑤若读入字符为“(”,则将读入字符入栈。
⑥若读入字符为“)”,则将弹出栈顶元素,并将弹出的运算符存入数组中,直到栈顶元素为“(”,此时弹出栈顶元素。
⑦若读入字符为“#”,则break。
(3)表达式字符读入完成后,如果栈中不空,则将栈中字符全部弹出,存入数组中。
2.后缀表达式求值:
(1)从左至右读取数组中的元素,并进行如下操作:
①若读入字符为运算数,则将其入栈。
②若读入字符为运算符,则分两次弹出栈顶元素作为运算数进行运算,并将运算结果入栈。
(2)读取并返回栈顶元素即为表达式的运算结果。
无标签
发布日期:
2020-05-06
文章字数:
425
阅读时长:
1 分
本博客所有文章除特別声明外,均采用
CC BY 4.0
许可协议。转载请注明来源
irenhongyan
!