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

中缀表达式转后缀表示式,及后缀表达式的运算规则

后缀表达式又称为逆波兰表达式

一,中缀表达式如何转后缀表达式

假定给出以下中缀表达式

1+3+2*2-1;

要将该表达式转为后缀表达式,我们要按照一定的规则去走,并且用到栈。

先来看规则中缀转后缀的规则:

前提:我们将上述表达式中的数字称为操作数,运算符号称为操作符。

先不考虑有括号的情况:

  • 遇到操作数就输出
  • 遇到操作符
  •         如果栈为空,就入栈。
  •         如果栈不为空,就与栈顶的元素进行比较,如果比栈顶的操作符优先级高得话就入栈。
  •                                                                              如果比栈顶操作符优先级低(或相等)就出栈顶的操作符,然后该操作符入栈。
  • 中缀表达式走完之后,再将栈中的元素取出。

根据上述规则,对表达式转化的过程如下:

我们再来看中缀表达式里有括号的情况:

1+2+(6-2)*2;

 总结:遇到左括号时,左括号入栈,在遇到右括号之前遇到的操作符都依次入栈,遇到右括号的时候,依次再出栈顶元素直到出到左括号,但是括号不作为输出进行输出。

二,后缀表达式的运算法则

我们就以上面第二组的测试为例,得到其后缀表达式的结果为:1 2 + 6 2 - 2 * +

 将后缀表达式看作在一个栈中。

规则:

  1. 遇到操作数继续向后走
  2. 遇到操作符就将该操作符出栈,再取两次栈顶元素依据该操作符进行运算。
  3. 运算的结果再入栈

过程如下图:

逻辑其实还是并不是那么难的,但是要用代码写出来的话,还是有一定难度的,这里不建议使用C语言去写。

下面是两道力扣上的练习题目:

150.逆波兰表达式求值(中等)

224.基本计算器(困难)

http://www.lryc.cn/news/39508.html

相关文章:

  • 【C++】STL简介
  • (小甲鱼python)文件永久存储(上)总结 python文件永久存储(创建打开文件、文件对象的各种方法及含义)
  • 甲酸溶液除钠离子,丙酸溶液除钾离子,医药液体除钾
  • 操作系统(2.2)--进程的描述与控制
  • Python连接es笔记四之创建和删除操作
  • 字符串填充到指定长度
  • macOS虚拟机安装全过程(VMware)
  • 第十三届蓝桥杯A组:选数异或——三种解法(线段树、DP、ST表)
  • 【CTF】CTF竞赛介绍以及刷题网址
  • Springboot怎么优雅实现大文件的上传
  • 2月编程语言排行榜新鲜出炉,谁又摘得桂冠?
  • 机器学习中的数学原理——模型评估与交叉验证
  • JAVA开发(JSP的9大内置对象和4大作用域)
  • (4)EKF失控保护
  • 数论----质数的求解(C/C++)
  • 【电赛MSP430系列】GPIO、LED、按键、时钟、中断、串口、定时器、PWM、ADC
  • 【Linux】进程理解与学习(Ⅱ)
  • vscode 爽到起飞的快捷键
  • vs +qt 打包.cpp和.h为DLL文件
  • echarts有滑块
  • MATLAB绘制ROC曲线
  • ChatGPT前传
  • 我的十年编程路 2020年篇
  • 力扣-SQL【入门】
  • Vue中组件到底是什么
  • 不同时间间隔数据对统计结果的影响
  • hudi系列-数据写入方式及使用场景
  • C # FileStream文件流
  • Go语言中的保留字和运算符详解
  • Linux编译之(1)C语言基础