中缀转后缀

从中序表达式 转换为 后序表达式

例题:

利用栈对表达式1+9/(8-5)*4求值的过程中,操作数栈的最大容量是多少?(B )。
A.3
B.4
C.5
D.2

操作数栈:先是+/(- , 然后遇到),则为+/ , 最后是+*

解析:
1.建立符号栈
2.顺序扫描中序表达式
a) 是数字, 直接输出
b) 是运算符
i : “(” 直接入栈
ii : “)” 将符号栈中的元素依次出栈并输出, 直到 “(”, “(“只出栈, 不输出
iii: 如果该操作符的优先级大于堆栈出口的操作符,就直接将操作符存储到堆栈中
iiii:如果该操作符的优先级不大于堆栈出口的操作符,就将堆栈出口的操作符导出(pop it), 直到该操作符的优先级大于堆栈顶端的操作符
3.扫描完后, 将栈中剩余符号依次输出

例 : 3+(2-5)*6/3

  • 遇到3,是数字,直接输出

表达式:3
符号栈:

  • 遇到+,栈是空的,直接将符号存储在堆栈中

表达式:3
符号栈:+

  • 遇到(,直接入栈

表达式:3
符号栈:+(

  • 遇到2,是数字,直接输出

表达式:32
符号栈:+(

  • 遇到-,遇到的操作符是左括号"(”,就直接将该操作符输出到堆栈当中

表达式:32
符号栈:+(-

  • 遇到5,是数字,直接输出

表达式:325
符号栈:+(-

  • 遇到),将符号栈中的元素依次出栈并输出, 直到 “(”, “(“只出栈, 不输出

表达式:325-
符号栈:+

  • 遇到*,该操作符的优先级大于堆栈出口的操作符,就直接将操作符存储到堆栈中

表达式:325-6
符号栈:+*

  • 遇到6,是数字,直接输出

表达式:325-6
符号栈:+

  • 遇到/,该操作符的优先级不大于堆栈出口的操作符,将堆栈出口的操作符导出, 直到该操作符的优先级大于堆栈顶端的操作符

表达式:325-6*
符号栈:+/

  • 遇到3,是数字,直接输出

表达式:325-6*3
符号栈:+/

  • 扫描完成,将符号栈内的符号依次输出

表达式:325-6*3/+

运用后缀表达式进行计算的具体做法:

例 : 6 5 2 3 + 8 * + 3 + *

  • 遇到数字,直接入栈

栈 :6 5 2 3

  • 遇到+,取栈顶的两个操作数,2+3=5,入栈

栈 :6 5 5

  • 遇到8,是数字,直接入栈

栈 :6 5 5 8

  • 遇到*,取栈顶的两个操作数,5*8=40,入栈

栈 :6 5 40

  • 遇到+,取栈顶的两个操作数,5+40=45,入栈

栈 :6 5 45

  • 遇到3,是数字,直接入栈

栈 :6 45 3

  • 遇到+,取栈顶的两个操作数,45+3=48,入栈

栈 :6 48

  • 遇到*,取栈顶的两个操作数,6*48=288,入栈

栈 :288

参考:https://blog.csdn.net/u012507347/article/details/52245233

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

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

相关文章

动手造轮子:写一个日志框架

动手造轮子:写一个日志框架Intro日志框架有很多,比如 log4net / nlog / serilog / microsoft.extensions.logging 等,如何在切换日志框架的时候做到不用修改代码,只需要切换不同的 loggingProvider 就可以了,最低成本的…

对循环队列的理解

循环队列存储在数组A[0…n-1]中,其头尾指针分别为f和r,头指针f总是指向队头元素,尾指针r总是指向队尾元素的下一个位置,则元素e入队时的操作为(B )。 A.A[r]e; rr1 B.A[r]e; r(r1)%n C.A[r]e;r(r1)%(n1) D.…

【C】@程序员,我们送给你一个成熟的Excel导入导出组件

程序员的显著特点有一天跟一位同事跟我闲聊,讨论起过去若干年软件行业的感受,他问了个问题:你觉得一个好的软件工程师最显著的特点是什么?我想了一会,说:大概是坐得住吧。某种意义上来说,在互联…

SummerBoot,将SpringBoot的先进理念与C#的简洁优雅合二为一

哈哈哈哈,大家好,我就是高产似母猪的三合,好久没写博客了,因为最近几个月在不断的加班,加班时长平均每个月120小时以上。今天是2020年的第一天,作为一条程序汪,觉得不做点啥好像对不起这个特别有…

树的度,结点,叶子结点,二叉树

设树T的度为4,其中度为1、2、3、4的结点个数分别为4、2、1、1。则T中有多少个叶子结点? A.4 B.6 C.8 D.10 一棵含有n个结点的树,有n-1个分支,即 n 14 22 31 41 1 16; 又由于 n n0 n1 n2 n3 n4 n0 8; n0 8 16&#…

C#刷遍Leetcode面试题系列连载(6):No.372 - 超级次方

点击蓝字“dotNET匠人”关注我哟加个“星标★”,每日 7:15,好文必达!前文传送门:C# 刷遍 Leetcode 面试题系列连载(1) - 入门与工具简介C#刷遍Leetcode面试题系列连载(2): No.38 - 报数C#刷遍Le…

堆 最大堆 最小堆

堆是特殊的队列 从堆中取出元素是依照元素的优先级大小,而不是元素进入队列的先后顺序 堆最常用的结构是二叉树表示,不特指的话,它是一棵完全二叉树 因为高度为h的完全二叉树有结点2(h-1) 到2h-1个,且结点排布及其规律&#xff…

使用 Postman 测试你的 API

使用 Postman 测试你的 APIIntro最近想对 API 做一些自动化测试,看了几个工具,最后选择了 postman,感觉 postman 的设计更好一些,我们可以在请求发送之前和请求获取到响应之后都可以自定义脚本,很灵活。而且 postman 的…

散列查找 散列表(哈希表)

哈希表的平均查找长度是()的函数。 A.哈希表的长度 B.哈希表的装填因子 C.哈希函数 D.表中元素的多少 装填因子 关键字个数 / 表长 符号表:是 “名字(Name)–属性(Attribute)”对的集合 符号表…

使用 postman 给 API 写测试

使用 postman 给 API 写测试Intro上次我们简单介绍了 使用 postman 测试 API,这次主要来写一些测试用例以检查请求的响应是否符合我们的预期以及如何使用脚本测试使用 postman 内置的随机变量postman 内置的有一些产生随机值的变量,在发送请求时随机生成…

图 无向图 有向图

若无向图G (V,E)中含7个顶点,要保证图G在任何情况下都是连通的,则需要的边数最少是: A.6 B.15 C.16 D.21 (n-1)*(n-2)/21 6 * 5/2116 设无向图的顶点个数为N,则该图最多有多少条边?…

Excel催化剂回顾2019年产出(文章合集),展望2020年

一年结束,大家都对自己一年辛勤耕耘作一个总结,Excel催化剂也不落俗,也来一篇文章合集式的梳理,方便大家对Excel催化剂的产出有一个宏观全局的认识。不断创新中前行Excel催化剂从2018年开波以来,累计到如今已有114个大…

朗文3000词汇表带音标_英语零基础音标语法都不会词汇量3000 学雅思到6/6.5分 需要多久 该如何做?...

谢邀~题主好!看来题主的零基础非常纯正。你现在测试的单词量是3000,只能大概展示出你的一些基础,但其实真正的还是要看你会使用,真正理解用法、语境的词汇有多少,而不是为了看起来有多少的那个数字。那么首先题主最好的…

选择排序 插入排序 交换排序

动图演示: https://www.runoob.com/w3cnote/bubble-sort.html 选择排序 简单选择排序 在未排序的序列中,选出最小的元素和序列的首位元素交换,接下来在剩下的未排序序列中,再选出最小元素与序列的第二位元素交换,以此…

ASP.NETCore编程实现基本认证

HTTP基本认证在HTTP中,HTTP基本认证(Basic Authentication)是一种允许浏览器或其他客户端程序使用(用户名,口令)请求资源的身份验证方式,不要求cookie,session identifier、login page等标记或载…

计算机原理(计算机系统漫游)

计算机五大组成部件:运算器(ALU),控制器,存储器,输入部件,输出部件 1.控制器 2.运算器 逻辑运算(判断事物的对与错) 数学运算(11) 控制器运算器中央处理器(CP…

使用ASP.NET Core 3.x 构建 RESTful API - 4.2 过滤和搜索

向Web API传递参数数据可以通过多种方式来传给API。 Binding Source Attributes 会告诉 Model 的绑定引擎从哪里找到绑定源。 共有以下六种 Binding Source Attributes: [FromBody] 请求的 Body [FromForm] 请求的 Body 中的 form数据 [FromHeader] 请求的 Header […

360浏览器linux版本_360安全浏览器崩溃解决方案

360安全浏览器崩溃解决方案方案一:打开360安全浏览器,按键盘上的F1调出浏览器医生界面,点击一键修复即可。如图所示:方案二:360浏览器打开了太多标签占用内存,并且随着浏览器开着的时间越长,占用…

.NET 开源软件开发BIM工具包xBIM

一、xBIM 简介BIM(Building Information Modelling)建筑信息模型,xBIM(eXtensible Building Information Modelling)可扩展的建筑信息模型。它是一个.NET 开源软件开发BIM工具包,支持BuildingSmart数据模型…