码迷,mamicode.com
首页 > 其他好文 > 详细

简易计算器实现

时间:2018-10-05 12:28:35      阅读:156      评论:0      收藏:0      [点我收藏+]

标签:family   结束   lan   ext   通过   参考   运算符   size   htm   

中缀表达式转后缀表达式

思路:维护一个队列和一个栈。然后按下面过程进行处理:

①、当队列元素为数字时

 ·直接保存到队列

②、当队列元素为加减时

 ·判断栈顶的运算优先级,由于+-的优先级小于等于所有运算符

 ·所以循环取出栈顶的运算符并入队列

 ·直到遇到栈为空、遇到左括号时才停止,最后再将当前+-入栈

③、当队列元素为乘除时

 ·判断栈顶的运算优先级,由于*/的优先级只小于等于*/

 ·所以循环判断栈顶运算符,如果栈顶运算符是*/,则取出并入队

 ·直到遇到栈为空、遇到左括号、遇到+-时才停止,最后再将当前*/入栈

④、当前队列元素为左括号时

 ·直接入栈

⑥、当前队列元素为右括号时

 ·循环将栈顶运算符出栈并入队列

 ·直到遇到左括号停止,并将左括号出栈弃掉.

⑦、当队列元素判断结束后

 ·判断栈是否为空,如果不为空,则将栈存储的运算符出栈并入队列


 后缀表达式计算

通过逆波兰表达式计算后缀表达式,思路如下

[注]:波兰式是在通常的表达式中,二元运算符总是置于与之相关的两个运算对象之前,所以,这种表示法也称为前缀表达式。

①、遇到数字时

 ·入栈

②、遇到运算符时

 ·取出栈顶的两个数,然后进行计算(有除法时,需要判断除数是否为0)

 ·计算完成后,再将结果入栈

③、当后缀表达式队列对空时

 ·表示遍历结束,此时栈中若只剩下唯一数字,则算出了结果答案.


 参考

简易计算器实现

标签:family   结束   lan   ext   通过   参考   运算符   size   htm   

原文地址:https://www.cnblogs.com/solvit/p/9744249.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!