数据结构【一】:前缀表达式与后缀表达式的区别
在早期计息机系统中,由于没有括号规定运算顺序,因此,依靠出栈和入栈两种方式,限定元素和符号之间的关系确定了前缀表达式和后缀表达式两种运算方式,中缀表达式即为普通的运算表达式;注意,在栈结构进行数据删除和增加的一端称之为栈顶Top。
1)前缀表达式(前序表达式、波兰式)
前缀表达式是指不包含括号,将运算符放在两个运算对象前面。中缀表达式转换成前缀表达式时,先确定计算顺序,随后从最里面的一层括号进行转换。原则上从右向左遍历表达式,先将整数从右至左入栈,运算符从左向右入栈。
# 将 1 + ((2 + 3)* 4 ) – 6 表达式转换成前缀表达式,前缀表达式从右往左扫描;
1) (2+3)*4 ===> * + 2 3 4
2) 1+((2+3)*4) ===> + 1 * + 2 3 4
3) 1 + ((2 + 3)* 4 ) – 6 ===> - 6 + 1 * + 2 3 4
计算前缀表达式(将前缀表达式转换成中缀表达式) 从右往左遍历前缀表达式
从右往左遍历前缀表达式的字符串,当字符串的字符为变量或整数时,将其压入栈中;当遇到运算符,则将栈顶的两个元素弹出栈外进行运算,将栈顶第1个元素记为top1,栈顶的第2的元素记为top2,
注意:计算方式为 top2 运算符 top1 = 值
运算结束后将结果压入栈中,继续遍历字符串,直到前缀表达式的最左端,最后运算得出的值为该前缀表达式的结果。
# 将前缀表达式转换为中缀表达式 - 6 + 1 * + 2 3 4, 假设栈底为左侧;
1) 从右往左遍历前缀表达式, 栈内数值为 4,3,2
2) 当遇到运算符 + 时,将栈顶的top1元素2和 top2元素3进行运算,即3+2=5,将计算结果入栈,则栈内数据为4,5
3) 当遇到运算符 * 时,将栈顶的top1元素5和 top2元素4进行运算,即4+5=20,将计算结果入栈,则栈内数据为20
4) 当遇到整数1时,加入到栈中,则栈内数据为20,1
5) 当遇到运算符 + 时,将栈顶的top1元素1和 top2元素20进行运算,即20+1=21,将计算结果入栈,则栈内数据为21
6) 当遇到整数6时,加入到栈中,则栈内数据为21,6
7) 当遇到运算符 - 时,将栈顶的top1元素6和 top2元素21进行运算,即21-6=15,将计算结果入栈,则栈内数据为15
2)后缀表达式(逆波兰式)
后缀缀表达式是指不包含括号,将运算符放在两个运算对象后面。中缀表达式转换成前缀表达式时,先确定计算顺序,随后从最里面的一层括号进行转换。原则上从左向右遍历表达式,先将最简表达式整数从左至右入栈,运算符随后入栈。
# 将 1 + ((2 + 3)* 4 ) – 6 表达式转换成后缀表达式
1) (2+3)*4 ===> 2 3 + 4 *
2) 1 + ((2 + 3)* 4 ) ===> 1 2 3 + 4 * +
3) 1 + ((2 + 3)* 4 ) – 5 ===> 1 2 3 + 4 * + 6 -
计算后缀表达式,从左往右遍历后缀表达式
从左往右遍历前缀表达式的字符串,当字符串的字符为变量或整数时,将其压入栈中;当遇到运算符,则将栈顶的两个元素弹出栈外进行运算,将栈顶第1个元素记为top1,栈顶的第2的元素记为top2,
注意:计算方式为 top2 运算符 top1 = 值
运算结束后将结果压入栈中,继续遍历字符串,直到前缀表达式的最右端,最后运算得出的值为该前缀表达式的结果。
# 将后缀表达式转换成中缀表达式 1 2 3 + 4 * + 6 - ,假设栈底为左侧;
1) 从左遍历后缀表达式, 在运算符前面的所有整数入栈 即:1,2,3
2) 遇到运算符 + , 则将栈中 top1 元素3 和 top2 元素2 进行计算, 2+3=5, 同时将结果加入到栈中, 即:1,5
3) 遇到整数4, 加入到栈中, 则: 1,5,4
3) 遇到运算符 * , 则将栈中 top1 元素4 和top2元素5 进行计算, 5*4=20, 同时将结果加入到栈中, 即:1,20
4) 遇到运算符 + , 则将栈中 top1 元素20 和top2元素1进行计算, 1+20=21, 同时将结果加入到栈中, 即:21
5) 遇到整数6, 加入到栈中, 则: 21 6
6) 遇到运算符 - , 则将栈中top1元素6和top2元素21进行计算,21-6=15
相关文章:
数据结构【一】:前缀表达式与后缀表达式的区别
在早期计息机系统中,由于没有括号规定运算顺序,因此,依靠出栈和入栈两种方式,限定元素和符号之间的关系确定了前缀表达式和后缀表达式两种运算方式,中缀表达式即为普通的运算表达式;注意,在栈结…...
搭建 PostgreSQL
端口:5432 代理备份端口:6432 下载 postgresql-15.0-1-windows-x64 乱码显示 配置环境变量 PGDATA数据目录位置 找到postgresql.conf文件, 修改参数 lc_messagesUTF8 max_connections 1000 shared_buffers4GB work_mem8MB 问题:…...
Nmap入门到高级【第四章】
预计更新Nmap基础知识 1.1 Nmap简介和历史 1.2 Nmap安装和使用方法 1.3 Nmap扫描技术和扫描选项 Nmap扫描技术 2.1 端口扫描技术 2.2 操作系统检测技术 2.3 服务和应用程序检测技术 2.4 漏洞检测技术 Nmap扫描选项 3.1 扫描类型选项 3.2 过滤器选项 3.3 探测选项 3.4 输出选项…...
c++正则表达式及其使用,超级详细
文章目录 概述正则表达式语法正则表达式操作std::regex_matchstd::regex_replacestd::regex_search 实例匹配邮箱替换 HTML 标签搜索 URL 总结 概述 正则表达式是一种用于匹配字符串的工具,可以在文本中查找特定的模式,并且可以快速地对字符串进行搜索和…...
【LeetCode: 剑指 Offer II 099. 最小路径之和 | 暴力递归 | DFS =>记忆化搜索=>动态规划】
🍎作者简介:硕风和炜,CSDN-Java领域新星创作者🏆,保研|国家奖学金|高中学习JAVA|大学完善JAVA开发技术栈|面试刷题|面经八股文|经验分享|好用的网站工具分享💎💎💎 🍎座右…...
Python OpenCV 计算机视觉:6~7
原文:OpenCV Computer Vision with Python 协议:CC BY-NC-SA 4.0 译者:飞龙 本文来自【ApacheCN 计算机视觉 译文集】,采用译后编辑(MTPE)流程来尽可能提升效率。 当别人说你没有底线的时候,你最…...
LabView中数组的使用2-1
在LabView中,数组用来管理相同类型的数据。 1 在前面板中创建数组 1.1 创建空数组 在前面板中创建数组时,首先在前面板中点击鼠标右键,弹出“控件”对话框,之后选择“新式->数组、矩阵与簇->数组”,在前面板中…...
Android 10.0 系统systemui下拉通知栏的通知布局相关源码分析
1.前言 在android10.0的系统rom开发中,在进行systemui中的下拉通知栏的布局自定义的时候,对于原生systemui的 系统的下拉通知栏的通知布局的了解也是非常重要的,接下来就来分析下相关的下拉通知栏的通知布局的相关 源码流程,了解这些才方便对通知栏的布局做修改 2.系统…...
研读Rust圣经解析——Rust learn-3(变量与可变性,数据类型)
研读Rust圣经解析——Rust learn-3(变量与可变性,数据类型) 变量|常量与可变性变量声明案例为什么不可变变量可变(mut关键字)变量可变(覆盖) 常量声明 数据类型标量类型整型整型字面值整型溢出问…...
接口的多继承多实现
接口的多继承多实现 目录 接口的多继承多实现多继承(接口1 extends 接口2,接口3)多实现(实现类 实现 接口1,接口2)总结1.类与类的关系2.类和接口的关系3.接口与接口的关系 多继承(接口1 extends 接口2,接口…...
腾讯-iOS面试题-答案
一面 1、介绍一下实习的项目,任务分工,做了哪些工作?介绍实习内容 2、网络相关的:项目里面使用到什么网络库,用过ASIHTTP库吗 在iOS开发中,常用的网络库包括: URLSession:苹果官方提供的网络…...
SQL Server内存架构
2. 内存架构 所谓内存架构,这里是指SQL Server实例内存管理、使用与相关逻辑设计及实现等方面内容。更具体一点,就是讲SQL Server实例分配、管理和使用其内存空间的内部机制。本书1.1节中我们已经讲过,SQL Server实例包括多个内部机制各不相同的内存区域,在此,我们将讲解…...
有哪些功能强大,但是很小众的Python库呢?
Python生态系统中有很多小众但非常强大的库,一般,通俗的规律就是,越是高端,越小众,但是,高端不代表难学,只要理论到了,用起来照样嗖嗖的,以下是一些参考的高端小众库&…...
SpringBoot设计了哪些可拓展的机制?
SpringBoot核心源码 public SpringApplication(ResourceLoader resourceLoader, Class<?>... primarySources) { ...this.primarySources new LinkedHashSet(Arrays.asList(primarySources));// Servletthis.webApplicationType WebApplicationType.deduceFromClass…...
Layer组件多个iframe弹出层打开与关闭及参数传递
Layer官网地址:http://layer.layui.com/ 1、多个iframe弹出层(非嵌套) 1.打开iframe弹出层js代码 (1)示例一: content参数可传入要打开的页面,type参数传2,即可打开iframe类型的弹层…...
BearPi环境搭建及基本使用
这是一篇总结,一些坑的记录 具体教程请访问: BearPi-HM_Nano: 小熊派BearPi-HM Nano开发板基于HarmonyOS的源码 - Gitee.com 第一步:安装虚拟机 不做赘述 第二步:下载资源 这里要用到ubuntu的一些基础知识,不会的…...
算法笔记-换根DP
换根DP 一般是给定一棵不定根树,求以每个节点为根的一些信息。可以通过二次扫描: 第一次扫描,任选一点为根,在有根树上,自底向上转移第二次扫描,从上一次扫描的根开始,自顶向下计算 P3478 [P…...
LeetCode 785. Is Graph Bipartite【DFS,二分图】中等
本文属于「征服LeetCode」系列文章之一,这一系列正式开始于2021/08/12。由于LeetCode上部分题目有锁,本系列将至少持续到刷完所有无锁题之日为止;由于LeetCode还在不断地创建新题,本系列的终止日期可能是永远。在这一系列刷题文章…...
【微信小程序】-- 分包 - 独立分包 分包预下载(四十五)
💌 所属专栏:【微信小程序开发教程】 😀 作 者:我是夜阑的狗🐶 🚀 个人简介:一个正在努力学技术的CV工程师,专注基础和实战分享 ,欢迎咨询! &…...
2.3 连续性随机变量
思维导图: 学习目标: 我会按照以下步骤学习连续型随机变量: 复习概率论的基础知识,包括概率、期望、方差等概念和公式,以及离散型随机变量的概率分布函数和概率质量函数的概念和性质。 学习连续型随机变量的概念和性…...
模型参数、模型存储精度、参数与显存
模型参数量衡量单位 M:百万(Million) B:十亿(Billion) 1 B 1000 M 1B 1000M 1B1000M 参数存储精度 模型参数是固定的,但是一个参数所表示多少字节不一定,需要看这个参数以什么…...
以下是对华为 HarmonyOS NETX 5属性动画(ArkTS)文档的结构化整理,通过层级标题、表格和代码块提升可读性:
一、属性动画概述NETX 作用:实现组件通用属性的渐变过渡效果,提升用户体验。支持属性:width、height、backgroundColor、opacity、scale、rotate、translate等。注意事项: 布局类属性(如宽高)变化时&#…...
【Java_EE】Spring MVC
目录 Spring Web MVC 编辑注解 RestController RequestMapping RequestParam RequestParam RequestBody PathVariable RequestPart 参数传递 注意事项 编辑参数重命名 RequestParam 编辑编辑传递集合 RequestParam 传递JSON数据 编辑RequestBody …...
让AI看见世界:MCP协议与服务器的工作原理
让AI看见世界:MCP协议与服务器的工作原理 MCP(Model Context Protocol)是一种创新的通信协议,旨在让大型语言模型能够安全、高效地与外部资源进行交互。在AI技术快速发展的今天,MCP正成为连接AI与现实世界的重要桥梁。…...
SpringCloudGateway 自定义局部过滤器
场景: 将所有请求转化为同一路径请求(方便穿网配置)在请求头内标识原来路径,然后在将请求分发给不同服务 AllToOneGatewayFilterFactory import lombok.Getter; import lombok.Setter; import lombok.extern.slf4j.Slf4j; impor…...
【论文阅读28】-CNN-BiLSTM-Attention-(2024)
本文把滑坡位移序列拆开、筛优质因子,再用 CNN-BiLSTM-Attention 来动态预测每个子序列,最后重构出总位移,预测效果超越传统模型。 文章目录 1 引言2 方法2.1 位移时间序列加性模型2.2 变分模态分解 (VMD) 具体步骤2.3.1 样本熵(S…...
【数据分析】R版IntelliGenes用于生物标志物发现的可解释机器学习
禁止商业或二改转载,仅供自学使用,侵权必究,如需截取部分内容请后台联系作者! 文章目录 介绍流程步骤1. 输入数据2. 特征选择3. 模型训练4. I-Genes 评分计算5. 输出结果 IntelliGenesR 安装包1. 特征选择2. 模型训练和评估3. I-Genes 评分计…...
在web-view 加载的本地及远程HTML中调用uniapp的API及网页和vue页面是如何通讯的?
uni-app 中 Web-view 与 Vue 页面的通讯机制详解 一、Web-view 简介 Web-view 是 uni-app 提供的一个重要组件,用于在原生应用中加载 HTML 页面: 支持加载本地 HTML 文件支持加载远程 HTML 页面实现 Web 与原生的双向通讯可用于嵌入第三方网页或 H5 应…...
AI,如何重构理解、匹配与决策?
AI 时代,我们如何理解消费? 作者|王彬 封面|Unplash 人们通过信息理解世界。 曾几何时,PC 与移动互联网重塑了人们的购物路径:信息变得唾手可得,商品决策变得高度依赖内容。 但 AI 时代的来…...
【VLNs篇】07:NavRL—在动态环境中学习安全飞行
项目内容论文标题NavRL: 在动态环境中学习安全飞行 (NavRL: Learning Safe Flight in Dynamic Environments)核心问题解决无人机在包含静态和动态障碍物的复杂环境中进行安全、高效自主导航的挑战,克服传统方法和现有强化学习方法的局限性。核心算法基于近端策略优化…...
