zoukankan      html  css  js  c++  java
  • 栈的应用

    1、利用栈,将中缀表达式(即标准形式的表达式)转换为后缀式

    例:a+b*c+(d*e+f)*g转换成abc*+de*f+g*+

    数据结构:一个操作符栈

    方法:

    (1)读入字符

    (2)如果字符为操作数,直接输出

    (3)如果字符为左圆括号,压入栈中

    (4)如果字符为非括号操作符,则比较当前操作符与栈顶操作符的优先级:

      a. 当前操作符优先级<=栈顶操作符,弹出栈顶操作符直至当前操作符优先级>栈顶操作符,当前操作符压入栈中

      b. 当前操作符优先级>栈顶操作符,压入栈中

      PS:()优先级最高

    (5)如果字符为右圆括号,弹出并输出栈中操作符直至左圆括号,左圆括号也弹出,左右圆括号不输出

    (6)如果读到表达式的末尾,弹出栈中所有元素并输出

    2、利用栈,实现计算器

    例:1-2*3+(4*5+6)*7

    数据结构:一个操作符栈,一个操作数栈

    方法:

    (1)读入字符

    (2)如果字符为数字,压入操作数栈

    (3)如果字符为左括号,压入操作符栈

    (4)如果字符为非括号操作符,则比较当前操作符与栈顶操作符的优先级:

      a. 当前操作符优先级<=栈顶操作符,从操作符栈中弹出一个操作符,从操作数栈中弹出一个/两个操作数,计算结果压入操作数栈,重复此步直至当前操作符优先级>栈顶操作符,当前操作符压入栈中

      b. 当前操作符优先级>栈顶操作符,压入栈中

    (5)如果字符为右括号,弹出并处理操作符直至左括号,左括号弹出

    (6)如果读到表达式的末尾,弹出所有操作符并处理

  • 相关阅读:
    mysql 批量删除process
    python-argparse
    【声纹识别】matlab-辨别男女声
    python @装饰器
    【机器学习】大数定律,中心极限定律 极大似然估计
    【tensorflow】mnist-精简版模型
    Linux 的内存分页管理
    Python-内建函数
    Python-各种结构解析以及生成器(列表解析,字典解析,集合解析,元组构成的生成器)
    Python-模块之时间模块(time,datetime)
  • 原文地址:https://www.cnblogs.com/guo-xiang/p/4499653.html
Copyright © 2011-2022 走看看