数据结构--栈的引用--前中后缀表达式(后部分)

news2024/12/25 13:38:31

数据结构–栈的引用–前中后缀表达式(后部分)

中缀表达式转后缀表达式(手算)

中缀转后缀 \color{purple}中缀转后缀 中缀转后缀 手算方法 \color{purple}手算方法 手算方法:
①确定中缀表达式中 各个运算符的运算顺序 \color{red}各个运算符的运算顺序 各个运算符的运算顺序
②选择下一个运算符,按照 「左操作数右操作数运算符」 \color{red}「左操作数右操作数运算符」 「左操作数右操作数运算符」的方式组合成一个新的操作数③如果还有运算符没被处理,就继续②
“左优先”原则 \color{red}“左优先”原则 左优先原则:只要左边的运算符能先计算,就优先算左边的

中缀表达式转后缀表达式(机算)

初始化一个栈,用于保存 暂时还不能确定运算顺序的运算符 \color{red}暂时还不能确定运算顺序的运算符 暂时还不能确定运算顺序的运算符。从左到右处理各个元素,直到末尾。可能遇到三种情况:
①遇到 操作数 \color{red}操作数 操作数。直接加入后缀表达式。
②遇到 界限符 \color{red}界限符 界限符。遇到“(”直接入栈;遇到“)”则依次弹出栈内运算符并加入后缀表达式,直到弹出“(”为止。注意:“(”不加入后缀表达式。
③遇到 运算符 \color{red}运算符 运算符。依次弹出栈中 优先级 \color{purple}优先级 优先级高于或等于当前运算符的所有运算符,并加入后缀表达式,若碰到“(”或栈空则停止。之后再把当前运算符入栈。
∗ / 优先级高于 + − \color{pink}*/优先级高于+- /优先级高于+
按上述方法处理完所有字符后,将栈中剩余运算符依次弹出,并加入后缀表达式。

中缀表达式的计算(用栈实现)

用栈实现 \color{purple}用栈实现 用栈实现中缀表达式的计算:
初始化两个栈, 操作数栈 \color{red}操作数栈 操作数栈 运算符栈 \color{red}运算符栈 运算符栈
若扫描到操作数,压入操作数栈
若扫描到运算符或界限符,则按照“中缀转后缀”相同的逻辑压入运算符栈(期间也会弹出运算符,每当弹出一个运算符时,就需要再 弹出两个操作数栈的栈顶元素并执行相应运算,运算结果再压回操作数栈 \color{red}弹出两个操作数栈的栈顶元素并执行相应运算,运算结果再压回操作数栈 弹出两个操作数栈的栈顶元素并执行相应运算,运算结果再压回操作数栈)

后缀表达式的计算(机算)

用栈实现 \color{purple}用栈实现 用栈实现后缀表达式的计算:
①从左往右扫描下一个元素,直到处理完所有元素②若扫描到操作数则压入栈,并回到①;否则执行③
③若扫描到运算符,则弹出两个栈顶元素,执行相应运算,运算结果压回栈顶,回到①

注意:
先出栈的是“右操作数”

栈用于存放当前暂时还不能确定运算次序的操作数

中缀表达式转后缀表达式(机算)

初始化一个栈,用于保存 暂时还不能确定运算顺序的运算符 \color{red}暂时还不能确定运算顺序的运算符 暂时还不能确定运算顺序的运算符。从左到右处理各个元素,直到末尾。可能遇到三种情况:
①遇到 操作数 \color{red}操作数 操作数。直接加入后缀表达式。
②遇到KaTeX parse error: Invalid color: '界' at position 7: \color界̲限符。遇到“(”直接入栈;遇到“)”则依次弹出栈内运算符并加入后缀表达式,直到弹出“(”为止。注意:“(”不加入后缀表达式。
③遇到 运算符 \color{red}运算符 运算符。依次弹出栈中优先级高于或等于当前运算符的所有运算符,并加入后缀表达式,若碰到“(”或栈空则停止。之后再把当前运算符入栈。
按上述方法处理完所有字符后,将栈中剩余运算符依次弹出,并加入后缀表达式。

中缀表达式的计算(用栈实现)

栈实现 \color{purple}栈实现 栈实现中缀表达式的计算:
初始化两个栈, 操作数栈 \color{red}操作数栈 操作数栈 运算符栈 \color{red}运算符栈 运算符栈若扫描到操作数,压入操作数栈
若扫描到运算符或界限符,则按照“中缀转后缀”相同的逻辑压入运算符栈(期间也会 弹出运算符,每当弹出一个运算符时,就需要再弹出两个操作数栈的栈顶元素并执行相应运算,运算结果再压回操作数栈 \color{red}弹出运算符,每当弹出一个运算符时,就需要再弹出两个操作数栈的栈顶元素并执行相应运算,运算结果再压回操作数栈 弹出运算符,每当弹出一个运算符时,就需要再弹出两个操作数栈的栈顶元素并执行相应运算,运算结果再压回操作数栈)

中缀表达式的计算(用栈实现)

用栈实现 \color{purple}用栈实现 用栈实现中缀表达式的计算:
初始化两个栈, 操作数栈 \color{red}操作数栈 操作数栈 运算符栈 \color{red}运算符栈 运算符栈若扫描到操作数,压入操作数栈
若扫描到运算符或界限符,则按照“中缀转后缀”相同的逻辑压入运算符栈(期间也会 弹出运算符,每当弹出一个运算符时,就需要再弹出两个操作数栈的栈顶元素并执行相应运算,运算结果再压回操作数栈 \color{red}弹出运算符,每当弹出一个运算符时,就需要再弹出两个操作数栈的栈顶元素并执行相应运算,运算结果再压回操作数栈 弹出运算符,每当弹出一个运算符时,就需要再弹出两个操作数栈的栈顶元素并执行相应运算,运算结果再压回操作数栈)

知识点回顾与重要考点

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

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

相关文章

编程手记【2023-6-25-2023-6-30】

1、Call to ‘toArray()’ with pre-sized array argument ‘new Integer[list.size()]’ 问题&#xff1a; // 将List转为数组 List<Integer> list Arrays.asList(1,2,3,4,5,6); Integer[] array list.toArray(new Integer[list.size()]); System.out.println(Array…

《移动互联网技术》 第二章 无线网络技术: 掌握各种近距离通信的基本概念和工作原理

&#x1f337;&#x1f341; 博主 libin9iOak带您 Go to New World.✨&#x1f341; &#x1f984; 个人主页——libin9iOak的博客&#x1f390; &#x1f433; 《面试题大全》 文章图文并茂&#x1f995;生动形象&#x1f996;简单易学&#xff01;欢迎大家来踩踩~&#x1f33…

ECShop 权限管理

如何增加一个新的权限 1、配置菜单所对应的权限code admin/includes/inc_priv.php $purview[02_cost_list] cost_list; 2、配置菜单的语言 languages/zh_cn/admincommon.php $_LANG[02_cost_list] 成本明细; 3、配置权限code的语言 languages/zh_cn/admin/priv_action.p…

制作电子宣传册详细教程?掌握技巧,让你0基础也能上手

企业电子宣传册是现代企业进行品牌推广和宣传的重要手段&#xff0c;随着互联网的发展&#xff0c;越来越多的企业开始使用电子宣传册来替代传统的纸质宣传册。电子宣传册可以通过互联网&#xff0c;微信公众号等传播渠道进行发布和传播&#xff0c;可以更加快速、便捷地传递企…

碳排放预测模型 | Python实现基于LR线性回归的碳排放预测模型

文章目录 效果一览文章概述研究内容源码设计参考资料效果一览 文章概述 碳排放预测模型 | Python实现基于LR线性回归的碳排放预测模型 研究内容 碳排放被认为是全球变暖的最主要原因之一。 该项目旨在提供各国碳排放未来趋势的概述以及未来十年的全球趋势预测。 其方法是分析这…

二叉树刷题总结

题单&#xff1a; 一&#xff0c;相同的树 题目&#xff1a; 给你两棵二叉树的根节点 p 和 q &#xff0c;编写一个函数来检验这两棵树是否相同。 如果两个树在结构上相同&#xff0c;并且节点具有相同的值&#xff0c;则认为它们是相同的。 题目接口&#xff1a; /*** Defin…

Tensorflow神经网络模型-鲜花种类识别

必应壁纸供图 Tensorflow神经网络模型-鲜花种类识别 数据集&#xff1a;https://download.csdn.net/download/weixin_53742691/87982215 导入相关依赖 import warnings import re from IPython.display import clear_output, display from tkinter import Tk, filedialog fro…

无序中的秩序之美:集合数据为编程世界增添新的维度

文章目录 集合数据简介集合数据特点常见的集合数据类型1. 列表&#xff08;List&#xff09;2. 元组&#xff08;Tuple&#xff09;3. 集合&#xff08;Set&#xff09;4. 字典&#xff08;Dictionary&#xff09; 集合数据简介 集合数据是指将多个元素组合在一起的数据结构。…

【数据库原理】MyShop 商城数据库设计(SQL server)

MyShop 商城数据库设计 项目背景定义课程设计要求概念结构设计逻辑结构设计数据结构的描述用户信息数据结构的描述地址信息数据结构的描述商品类别数据结构的描述商品数据结构的描述购物车数据结构的描述订单数据结构的描述订单项数据结构的描述 物理结构设计用户表结构地址表结…

机器视觉检测中的图像预处理方法:平滑模糊处理,锐化

一、平滑模糊处理 以Dalsa sherlock软件为例,一起来了解一下视觉检测中平滑模糊的图像处理方法。 1、观察灰度分布来描述一幅图像称为空间域,观察图像变化的频率被称为频域。 2、频域分析:低频对应区域的图像强度变化缓慢,高频对应的变化快。低通滤波器去除了图像的高频部…

【支付系统】java springboot 生成二维码,二维码中文乱码

支付系统必不可少的就是生成二维码,有时我们会需要将支付链接转换为二维码.用户通过移动设备扫描二维码调起支付. 该篇文章主要使用的是hutool自带的二维码生成功能. 1. 引入依赖(hutool 可以按需引入这里就直接使用all了) <dependency><groupId>com.google.zxing&…

conda环境里用不了电脑系统环境里的应用ffmpeg;ffmpeg调用本地windows麦克风读取

1、 ffmpegzai conda环境里执行不了&#xff0c;在系统可以运行 import ffmpegstream ffmpeg.input(rD:\sound\222.mp4) stream ffmpeg.filter(stream, fps, fps25, roundup) stream ffmpeg.output(stream, rD:\sound\dummy2.mp4) ffmpeg.run(stream)会报错&#xff1a; Fi…

分布式配置 Config

一、Config 简介 1、Config的组成 Server&#xff1a;分布式配置中心&#xff0c;是独立运行的微服务应用&#xff0c;连接配置仓库(Git、SVN、本地化文件等)并为客户端提供获取配置信息、加密信息和解密信息的访问接口。Client&#xff1a;各个微服务&#xff0c;通过 Serve…

ChatGLM2-6B发布,位居C-Eval榜首

ChatGLM-6B自2023年3月发布以来&#xff0c;就已经爆火&#xff0c;如今6月25日&#xff0c;清华二代发布&#xff08;ChatGLM2-6B&#xff09;&#xff0c;位居C-Eval榜单的榜首&#xff01; 项目地址&#xff1a;https://github.com/THUDM/ChatGLM2-6B HuggingFace&#xf…

java开发必备技能之Java泛型

简介 泛型的优点 1、泛型的本质是为了参数化类型&#xff0c;也就是在在不创建新的类型的情况下&#xff0c;通过泛型指定的不同类型来控制形参具体限制的类型&#xff0c;很明显这种方法提高了代码的复用性(比如List因为使用泛型可以添加任意类型的对象&#xff0c;而不需要…

《PyTorch深度学习实践》第八讲 加载数据集

b站刘二大人《PyTorch深度学习实践》课程第八讲加载数据集笔记与代码&#xff1a;https://www.bilibili.com/video/BV1Y7411d7Ys?p8&vd_sourceb17f113d28933824d753a0915d5e3a90 Dataset用于构造数据集&#xff0c;该数据集能够支持索引 DataLoader用于从数据集中拿出一个…

深入理解计算机系统(3)_计算机指令

深入理解计算机系统系列文章目录 第一章 计算机的基本组成 1. 内容概述 2. 计算机基本组成 第二章 计算机的指令和运算 3. 计算机指令 4. 程序的机器级表示 5. 计算机运算 6. 信息表示与处理 第三章 处理器设计 7. CPU 8. 其他处理器 第四章 存储器和IO系统 9. 存储器的层次…

金融基础知识(三):期权

1.认购期权与认沽期权 认购期权和认沽期权都是交易所常见的期权合约。 认购期权&#xff08;Call Option&#xff09;是一种给予持有人以在未来某个时间或特定事件发生时购买底层标的资产的权利。认购期权的持有人在行权日&#xff08;Expiration Date&#xff09;可以按照期…

B/S架构的C#云检验系统源码 实验室信息管理系统源码

科技的飞速发展为实验室信息管理带来了新机遇&#xff0c;云计算技术的应用更是为实验室信息管理打开了新的大门。云 LIS 实验室信息管理系统&#xff0c;作为一种新型的信息化管理方案&#xff0c;已经在多个实验室的信息化管理中得到应用&#xff0c;并且具有广阔的应用前景。…

Python3 命名空间和作用域 | 菜鸟教程(十七)

目录 一、命名空间 &#xff08;一&#xff09;简介 1、命名空间(Namespace)是从名称到对象的映射&#xff0c;大部分的命名空间都是通过 Python 字典来实现的。 2、命名空间提供了在项目中避免名字冲突的一种方法。 3、各个命名空间是独立的&#xff0c;没有任何关系的&a…