3.3栈和队列的应用

news2024/11/15 18:23:27

3.3.1括号匹配问题

 IDE可视化的编程环境

 作为一名程序开发人员,不管你使用哪门语言开发都有很多可以选择的集成开发环境IDE(Integrated Development Environment),IDE是提供程序开发环境的应用程序,一般包括代码编辑器、编译器、调试器和图形用户界面等工具。集成了代码编写功能、分析功能、编译功能、调试功能等一体化的开发软件服务套。开发者可以通过IDE提供的代码高亮,代码补全和提示.

算法演示:

 

 此时栈空

 

 

 算法流程图:

算法实现

字符型的数组里面存储了小括号,中括号和大括号(char str[])

用topElem存储弹出的栈顶元素。

用一个静态数组存储栈中的元素。

 

 

3.3.2栈在表达式求值的应用(上)

 比较喜欢考察中缀表达式

 

中缀,后缀,前缀表达式

 注意操作数的前后顺序在后缀表达式不能改变

 或者(看成一个整体)

接下来哦我们再来看前缀表达式:

 

混合运算转换:

中缀

后缀

 

 前缀

 

 

 

 运算符和操作数  中缀表达式和后缀表达式的生效顺序是相同的。

再来连一个例子:

 但是由于运算顺序不唯一,因此后缀表达式也不唯一。

 客观来看两种都是正确的,但是前者是“计算”结果。

要采取“左优先”原则,

左边的减号先于右边的除号先实现。

 

 

 那么如何进行手算

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

 

 

 

 若表达式合法,则最后栈中只会留下一个元素,就是最终结果。

中缀表达式转前缀表达式(手酸)EASY

 如果是右优先

 

3.3.3 站在表达式求值中的应用(下)

 算法的整体方法:

 

 减号和加号优先级相同。弹出加号,减号入栈(根据后缀表达式反波兰左优先原则)

 

 

 把乘号也压入栈中,不确定是否后面又括号。

 

 看成整体,把左边减号弹出。

再来一个例子,再有括号的情况下:

 

 

 

 

 

 

 

 

 完成了栈的后缀表达式的计算。

后缀转中缀(用栈实现)————栈用来存放操作数

(1)

 

 

 

 

 

 

 

 

(2)有运算符栈也有操作数栈

 

 

 

 

 

 

 

 先弹出来的的是右操作数

 

 

 压辉栈顶

 

 

3.3.4栈在递归中的应用

函数调用背后的过程

 函数调用的特点:最后被调用的函数最先执行结束(LIFO)

func1改变的参数的值a,b并没有改变主函数中a,b的值。

 

 存放函数,实参,函数变量。

适合用“递归”算法解决:可以把原始问题转换为属性相同,但规模较小的问题:

 

 递归调用时,函数调用栈可称之为“递归工作栈”

 

 每进入一层递归,就将递归调用所需信息压入栈顶,每退出一层信息,就从栈顶弹出响应信息。

缺点:太多递归可能会导致栈溢出。

也就是空间复杂度太高。

 

 

 

3.3.5队列的应用

 分层遍历

一边进,一边出

123-->23-->2345-->345-->34567-->4567-->567-->56789-->6789-->789-->7891011

把左右孩子放在队尾

队列应用———图的广度优先遍历

123-->23--> 234-->34-->3456-->456-->56-->5678(实现了图的广度优先遍历)

队列在操作系统中的应用

对各进程争抢使用有限的系统资源,FCFS(FIRST COME FIRST SERVICE)

 

 

多个电脑使用一个打印机

 

 可缓解主机与打印机速度不匹配的问题(使用队列把数据组织起来)

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

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

相关文章

程序员挣够了钱,到中年失业真的很可怕吗?

借用最近很火的一张图,看看没有工作,你手里的存款够用几年(按每年年化3.5%,利息继续放入理财计算): 如果每年花销在10万左右(折合每个月8333元,应该是比较富足的)&#x…

字节跳动高频 “ 120道 ” 软件测试面试题解析

1、web测试和APP测试的区别? web测试和APP测试都离不开测试的基础知识和测试原理。 不同点是:web 测试更多的是考虑自身功能和浏览器兼容,app 测试要考虑手机本身固有的属性,所以 app 测试还需要注意以下几点: 中断…

FreeRTOS 事件组

实现功能,当任务A,B完成后执行串口任务。 不同任务用不同的位表示 configUSE_16_BIT_TICKS1,bitx(0~7); configUSE_16_BIT_TICKS设置为0 ,bitx(0~23); //串口任务的头文件 #ifndef __TRANSMIT_H #define __TRANSMIT_H#include…

nVisual创建机柜流程

一、制作机柜 1.先在绘图软件中把机柜画出来 2.把机柜导出一张SVG格式的图片 二、创建机柜 1.打开nVisual右上角点击管理选择模型库 2.选择设备点击新增, 依次录入机柜品牌、型号、宽高深等基础数据, 再上传相应的前视图(在系统里展示…

自学python有推荐的么

大学生自学那必然是首推B站大学哇能称之为大学不是没有道理的,看看各个领域的学习分享都是非常多的,关键是看着弹幕就感觉像是在和一帮志同道合的小伙伴一起学习,自学的道路也不再孤单了,遇见不会的没准还能在弹幕和评论区找到答案…

TensorFlow详解3举个cnn卷积栗子

一、实现简单的cnn卷积神经网络 实现简单的cnn卷积神经网络(用到的是MNIST手写数字的数据库yann.lecun.com/exdb/mnist) 用到激活函数: 二、步骤 输入端是28281这样的一张图片,就是一张黑白的图片(假如他是一张彩色…

Cat入门学习笔记整理

Cat入门学习笔记整理链路调用追踪介绍链路调用监控实现过程简析常见的链路追踪框架CAT报表介绍Transaction报表Event报表Problem报表Heartbeat报表Business报表Cat实战docker安装客户端集成API介绍Transaction扩展APIEventMetricCAT监控界面介绍DashBoardTransactionEventProbl…

C++ 构造函数与析构函数

1.构造函数的引出 一个实实在在的对象,应该有合法的属性,而不是在对象出来之后,再去设置属性,要实现这个过程,必须在对象出来的这一时刻初始化合法的值,而且不能由程序员调用,要给属性合法的值&…

熟悉requests用法,实现简单网站爬虫

本文模拟的是前后端分离项目,使用账号密码登录获取到token,拿着token加载用户信息,加载分页列表数据并存储文件。 本文用到的知识点: 1、urllib.parse URL解析; 2、session用法,保存所有请求在一个会话中&a…

muduo源码剖析--Buffer

Buffer类 Buffer类是自定义处理数据输入缓冲的类&#xff0c;底层是vector< char >&#xff0c;通过readIdx和writeIdx将缓冲区分为3个部分&#xff0c;第一部分是预留的8字节已经读出的缓冲区字节数、第二部分是还未读出的部分、第三部分是可写的部分。 Buffer类的设计…

JavaScript【三】JavaScript中的数组

文章目录&#x1f31f;前言&#x1f31f;数组&#x1f31f;声明&#xff1a;&#x1f31f; 隐式创建&#xff1a;&#x1f31f; 实例化构造函数&#xff1a;&#x1f31f; 注意&#xff1a;一个值为数组的长度。&#x1f31f; 访问&#xff1a;&#x1f31f; 遍历&#xff1a;&…

C++练级之初级:第三篇

C练级之初级&#xff1a;第三篇 1.探索C中函数重载的本质 &#x1f914;首先我们先解决一下为什么C支持函数重载&#xff0c;而C语言不支持&#xff1f; 这里就不得不提起编译链接了&#x1f601;&#xff1b; &#x1f449;这是编译链接篇 以这三个简单的文件为例&#xff1…

C51单片机串口通信(概念部分)

1.通信的基本概念 1.1&#xff1a;串行通信与并行通信 &#xff08;1&#xff09;.串行通信 串行通信是指用一根数据线将 一个字节的八个bit位连接&#xff0c;从低位开始依次传输。 优点&#xff1a;成本便宜&#xff0c;传输稳定 缺点&#xff1a;速度慢 并行通信是指将一…

重学Java设计模式-行为型模式-责任链模式

重学Java设计模式-行为型模式-责任链模式 内容摘自&#xff1a;https://bugstack.cn/md/develop/design-pattern/2020-06-18-重学 Java 设计模式《实战责任链模式》.html#重学-java-设计模式-实战责任链模式「模拟618电商大促期间-项目上线流程多级负责人审批场景」 责任链模…

stegano(图片隐写、摩斯密码)

附件是PDF&#xff0c;我们在选择内容时发现光标溢出了文本 说明这里还存在一些我们看不到的内容 直接CtrlA全选&#xff0c;CtrlC复制后新建一个纯文本文件 将复制的东西粘贴过去 粘贴后发现果然多出来了一些东西&#xff0c;提取出来 BABA BBB BA BBA ABA AB B AAB ABAA A…

3.2 三角分解法

思维导图&#xff1a; 3.2 矩阵的三角分解 3.2.1 什么是矩阵的三角分解&#xff1a; 矩阵的三角分解&#xff0c;也称为LU分解&#xff0c;是一种将一个矩阵分解为一个下三角矩阵和一个上三角矩阵的方法。该分解通常用于解线性方程组和计算矩阵的行列式和逆矩阵。 设A为n*n的…

【通世智库】宁晓红:医疗更完整的样子

2022年的10月&#xff0c;北京协和医院缓和医学中心成立了&#xff0c;这是巨大的好消息&#xff01;北京协和医院连续13年蝉联中国医院排行榜榜首&#xff0c;它率先成立了缓和医学中心&#xff0c;可见缓和医疗在医学领域的重要地位和不可估量的价值。【作者&#xff1a;宁晓…

软件安全之CRC检测

CRC介绍 在玩某些游戏&#xff0c;例如fps类游戏时&#xff0c;你想要修改某些特定的数值实现一些功能&#xff0c;这时你很有可能会被查封账号甚至禁封机器码。因为你更改了游戏中的数据&#xff0c;从而导致接收方收到”错误的数据“。为尽量提高接收方收到数据的正确率&…

可视化Echarts中title、tooltip、legend的常用属性设置

title中常用的设置 配置项--tooltip 配置项--legend title中常用的设置 title 标题组件&#xff0c;包含主标题和副标题。 以下是常用的对标题的设置 title:{//设置图表的标题text:"主标题",link:"baidu.com", //设置标题超链接target:"self&q…

2023最新谷粒商城笔记之支付服务篇(全文总共13万字,超详细)

支付服务 这里我们是使用的支付宝进行支付&#xff0c;所以需要调用支付宝的相关API&#xff0c;下面来了解一下怎样使用支付宝进行线上支付。 支付宝配置相关概念 支付宝开放平台传送门&#xff1a;支付宝开放平台 网站支付DEMO传送门&#xff1a;手机网站支付 DEMO &…