【数据结构】一篇文章带你彻底学会《后缀表达式》

news2024/9/22 13:24:56

创作不易,本篇文章如果帮助到了你,还请点赞 关注支持一下♡>𖥦<)!!
主页专栏有更多知识,如有疑问欢迎大家指正讨论,共同进步!
🔥c语言系列专栏:c语言之路重点知识整合 🔥
给大家跳段街舞感谢支持!ጿ ኈ ቼ ዽ ጿ ኈ ቼ ዽ ጿ ኈ ቼ ዽ ጿ ኈ ቼ ዽ ጿ ኈ ቼ

后缀表达式充分利用了的知识

栈(Stack)是一种后进先出(LIFO)的数据结构
栈通常包括两个主要操作:入栈(push)和出栈(pop)
以及另外两个次要操作:查询栈顶元素(peek)和判断栈是否为空(isEmpty)


后缀表达式 目录

  • 一、概念
  • 二、计算过程理解
  • 三、原理
  • 中缀表达式转换为后缀表达式
    • 图解过程:

一、概念

后缀表达式,又称逆波兰式,指的是不包含括号,运算符放在两个运算对象的后面,所有的计算按运算符出现的顺序,严格从左向右进行(不再考虑运算符的优先规则)。

二、计算过程理解

如果在表达式中遇到运算符,就进行运算符前两个数使用这个运算符进行计算,结果保留,再进行后续的计算,再次遇到运算符时,计算过程同上。

在这里插入图片描述
在这里插入图片描述

三、原理

建立一个空栈

从左到右读表达式,如果读到数据就将它压入栈中,如果读到运算符则取出由栈顶向下的数据按操作数运算

再将运算的结果代替原栈顶的数据,压入栈中

如果后缀表达式未读完,则重复上面过程,最后输出栈顶的数值则为结束

在这里插入图片描述

  • 如果当前字符是数字,则将其转换为整数并将其压入栈
  • 如果当前字符是运算符,则弹出堆栈上的最后两个元素,使用该运算符对这两个元素进行计算,并将结果压入栈

堆栈顶部的元素即为表达式的计算结果。

中缀表达式转换为后缀表达式

  • 创建一个空栈和一个空串,用于存放运算符和转换后的后缀表达式;
  • 从左到右遍历中缀表达式中的每个元素:
  1. 如果当前元素是操作数,将其添加到输出串的末尾;

2.如果当前元素是左括号“(”,将其压入栈中;

3.如果当前元素是右括号“)”,则重复出栈操作直到栈顶元素是左括号,并将所有操作符加入输出串中;

4.如果当前元素是操作符,并且其优先级低于或等于栈顶运算符,则弹出栈顶元素并将其加入输出串中,然后再将当前操作符压入栈中;

5.如果当前元素是操作符,并且其优先级高于栈顶元素,则直接将当前操作符入栈。

  • 当中缀表达式中所有元素被处理完毕后,将栈中剩余的所有操作符都加入输出串中。

最终得到的输出串就是中缀表达式对应的后缀表达式

图解过程:

根据✖乘号的优先级,补充括号

拆解表达式:

  • 左侧存放数据,右侧存放符号

  • 当遇到右括号时,将左右括号中的符号放到左侧,剩下的符号依然在右侧

  • 重复过程就得到了后缀表达式

在这里插入图片描述
在这里插入图片描述


在这里插入图片描述

大家的点赞、收藏、关注将是我更新的最大动力! 欢迎留言或私信建议或问题。
大家的支持和反馈对我来说意义重大,我会继续不断努力提供有价值的内容!如果本文哪里有错误的地方还请大家多多指出(●'◡'●)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/594063.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

什么是项目可交付成果?定义、示例及管理工具

项目产生可交付成果&#xff0c;这只是项目活动的结果。项目可交付成果可大可小&#xff0c;其数量也因项目而异。它们是由项目管理团队和利益相关者在项目规划阶段商定的。 换句话说&#xff0c;任何类型的项目都有投入和产出。投入是你投入到项目中的东西&#xff0c;如数据…

Pixhawk无人机-ArduPilot 软件SITL仿真模拟飞行(SITL+MAVProxy)

1 引言 本人是先看了多个博客实现了&#xff1a;在ubuntu下建立完整的ardupilot开发环境。 该文是基于搭建完编译环境后&#xff0c;也就是搭建好ardupilot的仿真环境实现的。 在文章: 《Pixhawk无人机扩展教程(5)—SITL仿真模拟飞行&#xff1a;开发环境搭建》.中指出&#…

究竟什么是CRM?一文带您了解

目录 一、什么是CRM&#xff1f;它是用来做什么的&#xff1f; 1、获取商机的源头&#xff1a;全渠道营销管理 2、业绩提升的核心&#xff1a;销售管理 3、有温度的触达&#xff1a;客户服务 二、企业为什么需要布局CRM 1、销售是一场没有硝烟的战争 2、信息孤岛存在&am…

调用华为API实现中文语音识别

目录 1. 作者介绍2. 华为云中文语音识别2.1 录音文件识别与获取2.2 限制要求2.3 对象存储服务&#xff08;OBS&#xff09;简介 3. 实验过程以及结果3.1获得API3.2 代码实现3.3 运行结果 参考&#xff08;可供参考的链接和引用文献&#xff09; 1. 作者介绍 张楠&#xff0c;女…

【unity之c#专题篇】——进阶知识实践练习

&#x1f468;‍&#x1f4bb;个人主页&#xff1a;元宇宙-秩沅 &#x1f468;‍&#x1f4bb; hallo 欢迎 点赞&#x1f44d; 收藏⭐ 留言&#x1f4dd; 加关注✅! &#x1f468;‍&#x1f4bb; 本文由 秩沅 原创 &#x1f468;‍&#x1f4bb; 收录于专栏&#xff1a;uni…

如果你很焦虑、浮躁,不如去读一读林曦这本《无用之美》

生活中不可或缺的是柴米油盐&#xff0c;而濡养人心的往往是无用之美。——林曦    很难用语言写出这本书的美。有些书会给你带来内心的激荡&#xff0c;有些会让你充满力量&#xff0c;而林曦老师的书便自带一种轻盈的美&#xff0c;越往下读越能让人凝神静气。      …

浅谈一下@Async和SpringSecurityContext可能会遇到的问题和解决方案

Async和SpringSecurityContext 场景回溯 在执行一个用时较长的批量插入业务的时候,我尝试使用Async异步对业务进行优化,但是却给我报了空指针的错误,定位之后发现 此处我是基于SpringSecurity来获取用户的 是currentUserService获取到的当前登陆用户为空导致的,但是当前确实是…

文心一言 VS 讯飞星火 VS chatgpt (27)-- 算法导论5.1 2题

二、请描述 RANDOM(a&#xff0c;b)过程的一种实现&#xff0c;它只调用 RANDOM(0&#xff0c;1)。作为a和b的函数&#xff0c;你的过程的期望运行时间是多少? 文心一言&#xff1a; 假设我们有一个伪随机数生成器&#xff0c;可以生成在[0,1)范围内的随机数。那么我们可以使…

深入探讨JMeter中不为人知的JSONPath用法

在jmeter使用过程中&#xff0c;我们经常会看到接口返回数据类型为application/json&#xff0c;也就时我们常说的json格式。 而在功能测试时&#xff0c;我们经常会要对它的结果进行断言&#xff0c;确认结果是否与预期一致&#xff0c;有时候还会想从结果中提取某个值&#…

第十六章行为性模式—职责链模式

文章目录 职责链模式解决的问题结构实例存在的问题 JavaWeb 源码 - FilterChain 行为型模式用于描述程序在运行时复杂的流程控制&#xff0c;即描述多个类或对象之间怎样相互协作共同完成单个对象无法单独完成的任务&#xff0c;它涉及算法与对象间职责的分配。行为型模式分为类…

知识蒸馏:综述

本文主要是针对2021年 IJCV Knowledge Distillation: A Survey的一个翻译。 知识蒸馏&#xff1a;综述 摘要1 引言2 知识2.1 基于响应的知识2.2 基于特征的知识2.3 基于关系的知识 3 蒸馏方案3.1 离线蒸馏3.2 在线蒸馏3.3 自蒸馏 4 师生结构5 蒸馏算法5.1 对抗蒸馏5.2 多教师蒸…

SpringBoot @ConditionalOnProperty注解 + AOP切面控制日志打印

参考资料 ConditionalOnProperty的作用和用法 目录 一. 前期准备1.1 错误信息实体类1.2 自定义校验异常1.3 业务页面1.3.1 前台HTML1.3.2 Form实体类1.3.3 Controller层1.3.4 Service层 二. ConditionalOnProperty注解和AOP切面的使用2.1 配置文件2.2 AOP切面 ConditionalOnP…

深剖 Linux 信号量

目录 传统艺能&#x1f60e;POSIX信号量&#x1f60d;概念&#x1f602; 信号量函数&#x1f60d;初始化信号量&#x1f44c;销毁信号量&#x1f44c;等待&#xff08;申请&#xff09;信号量&#x1f44c;发布&#xff08;释放&#xff09;信号量&#x1f923; 二元信号量模拟…

Linux下C、C++、和Java程序设计

1.创建用户和之前一样。 RHEL7.2用户名和密码的创建以及DHCP服务的安装_封奚泽优的博客-CSDN博客https://blog.csdn.net/weixin_64066303/article/details/130763469?spm1001.2014.3001.55012.用yum安装&#xff08;分别是c,c,java,javac)(之前我以为是分开安装的&#xff0c…

Sui Builder House首尔站倒计时!

Sui主网上线后的第一场Builder House活动即将在韩国首尔举行&#xff0c;同期将举办首场线下面对面的黑客松。活动历时两天&#xff0c;将为与会者提供独特的学习、交流和娱乐的机会。活动详情请查看&#xff1a;Sui Builder House首尔站&#xff5c;主网上线后首次亮相。 Sui…

2. 虚拟环境

一、为什么要搭建虚拟环境&#xff1f; 在实际开发过程中&#xff0c;多个程序可能需要调试各种版本的不同环境&#xff0c;比如不同的Python解释器&#xff0c;不同的flask版本 二、如何搭建虚拟环境&#xff1f; 什么是虚拟环境&#xff1f; 它就是一个特殊的文件夹&…

一个matlab colorbar的简易代码cmocean

matlab自带的色阶不全&#xff0c;无法满足绘图的需求&#xff0c;而cmocean函数提供了一些常用的色阶。 函数命令&#xff1a;cmocean(ColormapName,varargin)&#xff0c;其中的ColormapName有如下的可选参数&#xff1a; 各个参数的绘图效果如下&#xff1a; 另外的一个参…

基于CAPL版本的CRC32算法

&#x1f345; 我是蚂蚁小兵&#xff0c;专注于车载诊断领域&#xff0c;尤其擅长于对CANoe工具的使用&#x1f345; 寻找组织 &#xff0c;答疑解惑&#xff0c;摸鱼聊天&#xff0c;博客源码&#xff0c;点击加入&#x1f449;【相亲相爱一家人】&#x1f345; 玩转CANoe&…

UI设计用什么软件做?

1、即时设计 即时设计是一款国内的在线协同设计工具&#xff0c;提供原型设计、UI/UX 设计和设计交付等核心功能。它无需第三方插件&#xff0c;拥有丰富的组件样式、中英文字体库和本地化资源&#xff0c;受到专业设计师的好评。与其他国外的 UI 工具相比&#xff0c;即时设计…

加拿大访问学者博士后签证材料清单指南

加拿大作为一个受欢迎的留学和研究目的地&#xff0c;吸引着许多国际学者和博士后前往交流和深造。作为准备申请加拿大访问学者或博士后签证的申请人&#xff0c;准备充分的材料是至关重要的。下面是知识人网小编整理的个关于加拿大访问学者博士后签证材料清单的指南&#xff0…