03 利用栈进行中缀表达式计算

news/2023/5/28 9:06:48

运算符优先级

​​​​请添加图片描述
栈内运算符加减乘除取模优先级比栈外优先级大1,例如当2+3-5时我们往往从左到右计算,即先算+再算-,使用中缀表达式两个栈计算就是栈外-优先级低于栈顶+,故会弹出+运算符和两个操作数进行计算。

中缀表达式计算(需要两个栈)

  • 需要使用两个栈,一个数字栈,用来存数字,另一个是运算符栈,用于存运算符
  • 数字栈出栈:只有运算符栈中右运算符出栈时,数字才会弹出两个操作数
  • 运算符栈出栈:比较新运算符与栈顶运算符优先级高低,当新运算符优先级高于站顶运算符时,新运算符入栈。当新运算符优先级低于栈顶元素时,栈顶运算符出栈(数字栈弹出两个操作数,计算结果入数字栈),然后再和新的栈顶元素进行比较,直到优先级高于栈顶元素或优先级相等(即栈内左括号,栈外右括号)
  • 计算:当数字栈弹出两个操作数,运算符栈出栈运算符时计算,计算结果重新入数字栈

以A+B×(C-D)-E/F为例

  1. 一开始数字栈和符为空,数字栈进了A和B,符号栈进了+
  2. ×运算符优先级高于+,进栈
  3. ( 优先级在入栈前是最高的(入栈后优先级变为最低),当然高于×,进栈
  4. - 优先级高于站内( ,入栈,D入栈
  5. 栈外 ) 优先级低于 - ,- 出栈,计算C-D设为r1,让r1入栈,继续比较,栈外)优先级等于栈内(,把( 扔掉,出栈结束
  6. 后续步骤如图:
    在这里插入图片描述

后缀表达式计算(需要一个栈)

中缀表达式转后缀表达式

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

如若内容造成侵权/违法违规/事实不符,请联系郑州代理记账网进行投诉反馈,一经查实,立即删除!

相关文章

LBG的VQ(矢量量化)实现

代码也是网上找的改了改。语音课老师让介绍并行VQ。VQ是真的好慢好慢… from scipy.cluster.vq import kmeans, vq from numpy import array, reshape, zeros import cv2vqclst [2, 10, 100, 256]data cv2.imread(018.jpg).astype(float) (height, width, channel) data.sh…

【Plant Cell Physiol】R2R3-MYB调节因子FhPAP1在香雪兰花青素生物合成中的作用

文章信息 题目:The Conserved and Particular Roles of the R2R3-MYB Regulator FhPAP1 from Freesia hybrida in Flower Anthocyanin Biosynthesis 刊名:Plant and Cell Physiology 作者:Yueqing Li, Xiang Gao 单位:Northea…

链游最前线:“LBG链游联盟”正式启动,网易推出第四款区块链游戏《镇魔曲》

编者按:区块链技术持续火爆,而区块链游戏被认为最有希望实现抢先爆发,甚至有人预言,下一个时代就是链游的时代。陀螺财经将以周报的形式,为广大区块链游戏从业者、爱好者传递一周内最有价值的链游资讯,让大…

LBG开发商Red Robot Labs融资850万美金

Red Robot Labs宣布获得850万美金投资于其基于地理位置的移动游戏业务。这轮新的融资似乎表明移动平台上社交游戏的赌注越来越大了,投资者和企业家们都支持有资深游戏开发者的创业公司。 该轮投资来自Benchmark Capital和Shasta Ventures。Playdom的联合创始人Rick …

【信源编码 作业四】基于LBG的矢量量化算法

1. LBG算法的概述 自从1980年提出矢量量化器码书设计的LBG算法以来,矢量量化技术已经成功地应用到图像压缩和语音编码中。 LBG算法中的最佳矢量量化器设计的关键是最佳划分和最佳码书的设计。 一是给定码书条件下寻找信源空间的最佳划分,使平均失真最小…

matlab图像处理--LBG训练器应用 VQ压缩

I double(imread(liftingbody.png)); Bk 4; data im2col(I, [Bk, Bk], distinct); N size(data, 2); M 100; rng(999) %随机选100个向量作为中心 rnd randi([1, N], [1,M]); centroid data(:, rnd);%LBG训练次数为10D zeros([100, N]);for iter 1 : 10for i 1 : Mfor…

【信源编码作业】5. LBG 矢量量化算法

0. 写在开头 嗯…现在是 2017 年 5 月 4 号晚 9 点半,明天早上就是信源编码课了… 所以… 来不及了!赶紧随便粘点东西! 1. LBG 算法介绍 想直接从维基百科粘的…结果竟然没有这个词条! 英文维基内容也超!级&…

【步进的节点】LBG演算法流程与演…

简介 LBG演算法是一种在多传感器节点网络之中常用的一种演算法,LBG算法通过训练矢量集和一定的 迭代算法来逼近最优的分组数据,在这里,使用C#来实现对该演算法步骤的演示,并绘图表示。 本程序的流程图如下: 在C#语言Vi…

信源编码第四次作业-基于LBG的矢量量化算法

1、LBG算法背景介绍 LBG算法是由Linde,Buzo,Gray三人在1980年提出的。它其实相当于Lord-Max方法的多维推广,但它并不需要知道输入矢量的概率分布,LBG算法通过训练矢量集和一定的迭代算法来逼近最优的再生码本。 2、LBG算法的思想 1)随意选…

(信源四)矢量量化算法--LBG

矢量量化,是70年代后期发展起来的一种数据压缩技术是一种高效的有损数据压缩技术,它具有压缩比大、解码简单和失真较小等优点。其基本思想是将若干个标量数据组构成一个矢量,然后在矢量空间给以整体量化,从而压缩了数据而不损失多…

Linux下的进程通信之system V共享内存

目录 使用system V共享内存进行进程间通信: 获取共享内存shmget 将共享内存关联到进程 去关联共享内存 删除共享内存 简易模拟实现server和client之间的通信: 服务端代码: 客户端代码: 共享内存的特点: 其他…

numpy实现K-means聚类算法(可选是否已知类别数)和VQ-LBG矢量量化算法以及散点数据生成(含完整实验报告)

numpy实现K-means聚类算法(可选是否已知类别数)和VQ-LBG矢量量化算法以及散点数据生成(含完整实验报告) 实验报告完整,质量不低,加上你学校的封面就能交,也可用来交流学习: (20条消息) 模式识别K-means和VQ-LBG算法的…

第四次作业 LBG矢量量化算法

1. LBG算法的概述自从1980年提出矢量量化器码书设计的LBG算法以来,矢量量化技术已经成功地应用到图像压缩和语音编码中。 LBG算法中的最佳矢量量化器设计的关键是最佳划分和最佳码书的设计。 一是给定码书条件下寻找信源空间的最佳划分,使平均失真最小&a…

LBG算法、Lloyd算法和K均值算法

---------------------------------LBG算法、Lloyd算法和K-Means算法--------------------------------- LBG算法是一种矢量量化算法,由Lloyd算法推广而来。在编码过程中,我们可以先对信源输出进行分组,再将每个组看做一个整体块进行编码&…

VQ矢量量化 LBG算法 c++代码实现 详细注释

参考: 1、语音信号处理之(三)矢量量化(Vector Quantization) 这篇真的是非常厉害,在CSDN很多矢量量化的文章都是参考了这篇文章 2、矢量量化 百度文库的PPT,详细的描述了矢量量化 矢量量化说…

【信源编码作业四】基于LBG的矢量量化算法

矢量量化VQ Vector Quantization是70年代后期发展起来的一种数据压缩技术是一种高效的有损数据压缩技术它具有压缩比大、解码简单和失真较小等优点。其基本思想是将若干个标量数据组构成一个矢量,然后在矢量空间给以整体量化,从而压缩了数据而不损…

matlab -- LBG训练器

LBG训练器 实现在二维坐标系下 点的分群 设置训练次数为十次,最后分群的重心坐标为红色方块 .m文件如下 function [ inic ] LBG(data, N)M size(data, 2) plot(data(1, 1:end), data(2, 1:end), o) grid on hold onptxt cell(1,M); ctxt cell(1,N);for i 1:M…

语音信号处理之(三)矢量量化(Vector Quantization)

语音信号处理之(三)矢量量化(Vector Quantization) zouxy09qq.com http://blog.csdn.net/zouxy09这学期有《语音信号处理》这门课,快考试了,所以也要了解了解相关的知识点。呵呵,平时没怎么听课…

LBG矢量量化算法

LBG算法 1、矢量量化是一种数据压缩技术,是一种高效的有损数据压缩技术,它具有压缩比大、解码简单和失真较小等优点。其基本思想:将若干个标量数据组构成一个矢量,然后在矢量空间以整体量化,从而压缩了数据而不损失多…

LBG 矢量量化算法

LBG矢量化算法 矢量量化VQVector Quantization是70年代后期发展起来的一种数据压缩技术是一种高效的有损数据压缩技术它具有压缩比大、解码简单和失真较小等优点。其基本思想是将若干个标量数据组构成一个矢量,然后在矢量空间给以整体量化,从而压…