【栈的应用】中缀和后缀表达式 {中缀转后缀表达式;中缀表达式求值;后缀表达式求值}

中缀转后缀表达式

在中缀变后缀时,操作数的顺序不会发生变化,只有运算符的顺序可能发生变化。同时又没有括号。所以在转换的过程中,只要碰到操作数,可以直接输出,而遇到运算符和括号进行相应的处理即可。

转换原则如下:

1.从左到右读取一个中序表达式。

2.若读取的是操作数,则直接输出。

3.若读取的是运算符,分三种情况。

  1. 该运算符为左括号( ,则直接存入堆栈。

  2. 该运算符为右括号),则输出堆栈中的运算符,直到取出左括号为止。

  3. 该运算符为非括号运算符,则与堆栈顶端的运算符做优先权比较:

    • 如果当前运算符优先级高于栈顶运算符,则直接入栈。
    • 如果当前运算符优先级低于等于栈顶运算符,则弹出栈顶运算符并输出,直到当前运算符优先级大于栈顶运算符或者栈空为止,然后将当前运算符入栈。

4.当表达式已经读取完成,而堆栈中尚有运算符时,则依次序取出运算符,直到堆栈为空,由此得到的结果就是中缀表达式转换成的后缀表达式。

逆波兰 - 上(中缀表达式 转 后缀表达式)_哔哩哔哩_bilibili


中缀表达式求值

中缀表达式求值通常涉及使用栈来处理运算符和操作数。以下是中缀表达式求值的基本步骤:

  1. 定义两个栈,一个用于存储操作数,另一个用于存储运算符。

  2. 遍历中缀表达式的每个字符,如果遇到操作数(数字),则将其压入操作数栈。

  3. 如果遇到运算符,则将其与运算符栈的栈顶元素比较优先级:

    1. 如果运算符的优先级高于栈顶元素的优先级,将其压入运算符栈。
    2. 如果运算符的优先级低于或者等于栈顶元素的优先级,则从操作数栈弹出两个操作数进行计算,并将结果压入操作数栈,同时将运算符栈中优先级低于或等于当前运算符的元素依次弹出并处理,直到遇到一个优先级高于当前运算符的元素或栈为空。
  4. 如果遇到左括号“(”,则直接将其压入运算符栈。

  5. 如果遇到右括号“)”,则从运算符栈弹出并处理运算符,直到遇到左括号“(”为止。

  6. 遍历完成后,如果运算符栈中还有元素,则从操作数栈弹出两个操作数进行计算,并将结果压回操作数栈。

  7. 最后,操作数栈中剩下的元素(如果有)就是表达式的求值结果。

这种方法的关键在于正确处理运算符的优先级和括号。


后缀表达式求值

后缀表达式,也称为逆波兰表达式,是一种没有操作符优先级的表达式(也没有左右括号),因此求值过程相对直接。求值过程通常涉及使用一个栈来辅助存储操作数,并按照以下步骤进行:

  1. 遍历后缀表达式中的每个元素。
  2. 如果遇到操作数(通常是数字),则将其压入栈中。
  3. 如果遇到操作符,则从栈中弹出两个操作数进行计算,并将结果压回栈中。
  4. 这个过程持续直到后缀表达式中的所有元素都被处理,最终栈中剩下的就是表达式的计算结果。

逆波兰 - 下(后缀表达式计算结果)_哔哩哔哩_bilibili

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

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

相关文章

SD8063音频功率放大器5V音频功率放大器低功耗

SD8063是一个双桥接音频功率放大器,当 连接到一个5V的pp时,将ver2.2W toa4ΩL oad(No电话)or2.5瓦至a3欧洛a(第2项) THDN含量小于an1.0%此外,耳机输入引 脚允许放大器在单端模式下工作时,驾驶立 体声耳机。 Boomer音频功率放大器的…

Java静态方法和实例方法有何不同?

在Java中,方法可以分为静态方法和实例方法。这两种方法的区别在于它们的调用方式、访问权限以及应用场景。理解这两者的区别对于掌握Java编程非常重要。下面我们将详细剖析这两者的区别,并通过代码示例加以说明。 1. 调用方式 静态方法的调用 静态方法…

代码随想录算法训练营day26 | 77. 组合

理论 回溯法也可以叫做回溯搜索法,它是一种搜索的方式。 回溯法并不是什么高效的算法。因为回溯的本质是穷举,穷举所有可能,然后选出我们想要的答案,如果想让回溯法高效一些,可以加一些剪枝的操作,但也改…

MySQL单表查询案例演示

目录 一、创建数据库lianxi 二、选择数据库为lianxi 三、新建一个数据表grade,在grade表中插入数据 四、开始进行查询操作(验证表中数据) 1、查询1945班的成绩信息 2、查询1945班,语文成绩大于60小于90的成绩信息 3、查询学…

优雅谈论大模型8:神经网络与矩阵

向量与矩阵 上个章节的神经网络是为了解Transformer或者Mamba做好铺垫,在和后辈交流过程中发现有个障碍,那就是向量和矩阵。其实向量和矩阵的表达方式不是所有人都很习惯。在继续下面的章节之前小编认为有必要将向量、矩阵和神经网络做下补充解释。 向…

18.双线性插值缩放算法的matlab与FPGA实现

一篇文章为你讲透双线性插值 简介 1.什么是插值 图片放大是图像处理中的一个特别基础的操作。几乎在每一个图片相关的项目中,从传统图像处理到i深度学习,都有应用。   简单来说,插值指利用已知的点来“猜”未知的点,图像领域插…

RocketMQ 面试题(三)

1. RocketMQ如何处理大量积压的消息? RocketMQ在处理大量积压的消息时,会采取一系列策略来确保消息能够被及时消费并减少积压的情况。以下是一些处理大量积压消息的关键措施: 增加消费者实例或消费者组:通过增加消费者实例或消费…

华为OD机试【分奖金】(java)(100分)

1、题目描述 公司老板做了一笔大生意,想要给每位员工分配一些奖金,想通过游戏的方式来决定每个人分多少钱。按照员工的工号顺序,每个人随机抽取一个数字。按照工号的顺序往后排列,遇到第一个数字比自己数字大的,那么&…

C++ STL概念之 仿函数(函数对象)/ 空间配置器 / 适配器 / 理解STL

仿函数(函数对象) 什么是仿函数 仿函数,或称为函数对象,在C中是通过重载operator()的类实例,使得类的实例能够像函数一样被调用。 可调用对象 函数指针(Function Pointers): 这是指向函数的指…

【class9】人工智能初步(处理单张图片)

Class9的任务:处理单张图像 为了更高效地学习,我们将“处理单张图像”拆分成以下几步完成: 1. 读取图像文件 2. 调用通用物体识别 3. 提取图像分类信息 4. 对应分类文件夹还未创建时,创建文件夹 5. 移动图像到对应文件夹 0.获取…

Ubuntu 安装 eclipse 的详细过程及工程创建和编译配置

目录 一、安装环境二、下载依赖 java jdk三、下载 eclipse四、安装4.1 java 环境4.2 eclipse 安装4.3 打开 eclipse 五、配置 eclipse5.1 新建 C 工程5.2 工具链 配置5.3 头文件路径5.4 链接库5.5 编译 一、安装环境 Ubuntu 版本:22.04.3 位数:64-bit 二…

记录一次 vue2 前端项目整合过程

整合成功效果图 具体说明: 项目A是现在的vue2前端项目,项目B是一个开源的工作流前端,项目后端代码已经整合了,就不多提了。这里主要记录下前端整合的过程和思路。 1、开源工作流里面的功能,拷贝到自己对应的vue2项目里…

PHP常量[特性,定义,输出,内置常量]

常量是一个在程序执行期间不能被修改的值。 特性 名称:常量的名称遵循大小写敏感的规则,但它们都推荐使用大写字母和下划线来增强可读性。值:常量的值可以是数字、字符串或表达式的结果,但一旦定义,就不能被改变。作…

大模型MoE技术深度解读,引领AI走向新高度

大模型系列之解读MoE Mixtral 8x7B的亮相,引领我们深入探索MoE大模型架构的奥秘。MoE究竟是什么?一起揭开它的神秘面纱。 1. MoE溯源 MoE,源自1991年的研究论文《Adaptive Mixture of Local Experts》,与集成学习方法相契合&…

机器学习笔记 KAN网络架构简述(Kolmogorov-Arnold Networks)

一、简述 在最近的研究中,出现了号称传统多层感知器 (MLP) 的突破性替代方案,重塑了人工神经网络 (ANN) 的格局。这种创新架构被称为柯尔莫哥洛夫-阿诺德网络 (KAN),它提出了一种受柯尔莫哥洛夫-阿诺德表示定理启发的函数逼近的方法。 与 MLP 不同,MLP 依赖于各个节…

NASA数据集——GES DISC 的 AIRS-CloudSat 云掩模、雷达反射率和云分类匹配 V3.2 (AIRS_CPR_MAT)

AIRS-AMSU variables-CloudSat cloud mask, radar reflectivities, and cloud classification matchups V3.2 (AIRSM_CPR_MAT) at GES DISC GES DISC 的 AIRS-CloudSat 云掩模、雷达反射率和云分类匹配 V3.2 (AIRS_CPR_MAT) 简介 这是 NetCDF-4 格式的 AIRS-CloudSat 定位子…

php 抖音授权登陆

前端&#xff1a; <view class"form weapp"><button v-if"page.agree" open-type"getPhoneNumber" getphonenumber"ttLogin" class"btn":class"{ disabled: !page.agree, ttprefix: page.mode tt }">…

餐谱的展示程序

开发背景 可以根据分类直接找到需要展示的餐谱&#xff0c;大的分类A、B、C、D等 二级分类 A1、A2、A3、A4。。。 餐谱就是图片 加 说明 页面 选择一级分类A&#xff0c;选择二级分类A1&#xff0c;查询出该分类下的餐谱 代码 /*** 查询列表*/RequiresPermissions("…

node.js的Express框架的介绍 与 安装详细教程

一、Express框架介绍 &#xff08;1&#xff09;Express定义&#xff1a; Express 是一个简洁而灵活的 node.js Web应用框架, 提供了一系列强大特性帮助你创建各种 Web 应用&#xff0c;和丰富的 HTTP 工具。 使用 Express 可以快速地搭建一个完整功能的网站。 &#xff08…

关于数据结构的整理

一.BRTEE&#xff1a; B树介绍&#xff1a; B 树是一种多路平衡查找树&#xff0c;通常用于数据库索引结构&#xff0c;在B树中&#xff0c;所有的关键字都被存储在叶子节点上&#xff0c;并按照顺序连接成一个有序链表。B树具有很好的平衡性和高效性&#xff0c;适用于范围查…