zoukankan      html  css  js  c++  java
  • 简易计算器实现

    中缀表达式转后缀表达式

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

    ①、当队列元素为数字时

     ·直接保存到队列

    ②、当队列元素为加减时

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

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

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

    ③、当队列元素为乘除时

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

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

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

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

     ·直接入栈

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

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

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

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

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


     后缀表达式计算

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

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

    ①、遇到数字时

     ·入栈

    ②、遇到运算符时

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

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

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

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


     参考

  • 相关阅读:
    C# 获得word中某一段落所在页的页码
    写一个安全的Java单例
    递归算法
    redis连接池连接失败的问题
    A query was run and no Result Maps were found for the Mapped Statement .....................
    解决maven默认JDK1.5报错
    mybatis控制台不报错数据库却没有值返回的问题
    LNMP 环境更换Nginx 服务器为Tengine
    简易的phpexcel导出柱状图
    Laravel学习基础篇之--路由
  • 原文地址:https://www.cnblogs.com/solvit/p/9744249.html
Copyright © 2011-2022 走看看