• 【无标题】


    中缀表达式是我们平时看到的运算式形式,但是对于计算机来说是非常难以理解的形式,在计算机运算中后缀表达式是更为常见的一种形式,将中缀表达式转换为后缀是我们必须掌握的方法。

    下面是依次扫描的几种基本原则:
    1.如果扫描的是数字,则直接输出;
    2.如果扫描的是'(',则直接入栈,此时'('变为优先级最小的运算符;
    3.如果扫描的是')',则栈顶元素不断出栈,直到将'('出栈(注意:'(',')'符号仅当标记使用,不用打印出后缀表达式中);
    4.如果扫描的是其它运算符,如果栈为空或优先级小于自己,则入栈;否则不断地出栈直到满足要
    求;
     
     



      例子:
    求  (a/(b*c-d))/(e-b)+d 的后缀表达式

    1.扫描到'(',进入符号栈;
    2.'a' 直接输出;
    3.‘/’优先级大于'(',入符号栈;
    4.'('直接入栈;
    5.'b' 直接输出;
    6.'*'优先级大于'(',直接入栈;
    7.'c' 直接输出;
    8.'-'优先级小于栈顶的 '*','*'输出,栈顶变为'(','-'入栈;

    9.‘d’直接输出;

    10.')'入栈,输出栈中的 '-',消除一个'(',栈顶现在变成'/';

    11.‘)’入栈,栈顶'/'输出,并消掉'(',符号栈为空;

    12.'/'入栈;

    13.'('入栈;

    14.‘e’ 直接输出;

    15.'-'优先级大于栈顶的'(',入栈;

    16.‘b’ 直接输出;

    17.')'入栈,栈顶'-'输出,消掉'(',此时栈顶变成'/';

    18.‘+’优先级小于'/','/'输出;

    19.‘d’直接输出;

    20.扫描完毕,将栈中元素依次弹出'+';

    最后得到:abc*d-/eb-/d+ 

  • 相关阅读:
    Vuex之三连环
    亚信科技:发挥自我优势深入AIGC,并购整合高瞻远瞩致力未来路
    Docker部署Tomcat及Web应用
    【Arduino】实验使用ESP32单片机点亮OLED屏幕(图文)
    (四)Shell编程之算数运算
    人体改造 VS 数字化身
    Linux 开机运行sh 脚本 三种方法
    java项目之咖啡馆管理系统ssm+jsp
    java实现http/https请求
    java中HashMap的设计精妙在哪?
  • 原文地址:https://blog.csdn.net/weixin_62466612/article/details/127998797