当前位置: 首页 > news >正文

每天一道算法题の中缀表达式

中缀表达式(+、-、*、/)

:中缀表达式是指操作符位于操作数之间的数学表达式。例如,在中缀表达式"2 + 3"中,操作符"+"位于操作数"2"和"3"之间。现给定一个中缀表达式,请计算其结果。

下载源码

基本思路:

  • 准备条件,创建需要用的数据

    1. 创建两个栈,分别用于存放数字(num)和操作符(operator)
    2. 创建一个char类型用于获取每次遍历的字符
    3. 创建两个int类型用于计算
    4. 创建一个index充当表达式的索引
  • 遍历表达式的每一个字符,根据条件将数字和字符分别存入对应的栈中

    1. 获取当前字符,判断是否为操作符
      • 是操作符
        • 判断当前符号栈是否为空
          • 为空,直接将当前字符入栈
          • 不为空,判断当前操作符和栈顶的操作符哪个优先级(priority)更高
            • 当前操作符优先级高于栈顶的操作符,当前操作符直接入栈
            • 当前操作符优先级小于栈顶的操作符,从数栈pop出两个元素,从符号栈pop出一个元素,根据符号栈pop出的元素计算数栈的两个数,并将计算结果存入数栈,当前符号入符号栈
      • 是数字
        • 判断当前索引index是否到了字符串的末尾
          • index等于字符串的末尾,直接将数入数栈
          • index不等于字符串的末尾,判断当前字符的下一位是否还是数字
            • 下一位是数字,拼接数字
            • 不是数字,将当前字符串入数栈,字符串置空
http://www.lryc.cn/news/3992.html

相关文章:

  • Dar语法基础-泛型
  • rt-thread------串口(一)配置
  • Android - 自动系统签名
  • SSH 服务详解 (八)-- vscode 通过 SSH 远程连接 linux 服务器
  • 【PTA Advanced】1060 Are They Equal(C++)
  • 仿真与测试:通过Signal Builder模块生成输入信号
  • 云计算培训靠谱吗?
  • 力扣SQL刷题10
  • 31 岁生日快乐,Linux!
  • 分布式ID生成方案
  • 合宙Air103|fbd数据库| fskv - 替代fdb库|LuatOS-SOC接口|官方demo|学习(16):类redis的fbd数据库及fskv库
  • 【论文精读】Deep Residual Learning for Image Recognition
  • Lesson2:基础语法、输出输入
  • android 9.0去掉前置摄像头闪光灯功能
  • 静态分析工具Cppcheck在Windows上的使用
  • 用一年时间脱胎换骨
  • 全景拼接python旗舰版
  • (C语言)常见的字符串与内存操作函数
  • Linux基础笔记总结
  • R语言学习笔记
  • 【软件测试】企业测试面试题9道,从自我介绍到项目考察+回答......
  • 《Spring源码深度分析》第8章 数据库连接JDBC
  • ModuleNotFoundError的解决方案【已解决】
  • Vue驼峰与短横线分割命名中有哪些坑
  • 从文件中加载数据以及异常处理
  • 【JavaSE】方法的使用
  • ModelScope 垂类检测系列模型介绍
  • Linux | Linux卸载和安装MySQL(Ubuntu版)
  • 【C1】数据类型,常量变量,输入输出,运算符,if/switch/循环,/数组,指针,/结构体,文件操作,/编译预处理,gdb,makefile,线程
  • 【深度学习】pytorch的基础操作