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

    中缀表达式转后缀表达式

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

    ①、当队列元素为数字时

     ·直接保存到队列

    ②、当队列元素为加减时

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

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

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

    ③、当队列元素为乘除时

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

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

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

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

     ·直接入栈

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

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

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

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

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


     后缀表达式计算

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

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

    ①、遇到数字时

     ·入栈

    ②、遇到运算符时

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

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

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

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


     参考

  • 相关阅读:
    js 左键点击页面时显示“您好”,右键点击时显示“禁止右键”。并在2分钟后自动关闭页面。
    搜藏 SQL
    邮件发送 图片
    超市购物打印小票的简单程序 记录下来
    KFC打印
    printf和scanf对于各种格式说明符
    Unity3d Camera size
    C#笔记
    CSV文件读写注意
    cocos2dx相关网址
  • 原文地址:https://www.cnblogs.com/solvit/p/9744249.html
Copyright © 2011-2022 走看看