数据结构历年考研真题对应知识点(栈和队列的应用)

目录

3.3栈和队列的应用

3.3.2栈在表达式求值中的应用

【中缀表达式转后缀表达式的过程(2012、2014)】

【栈的深度分析(2009、2012)】

【用栈实现表达式求值的分析(2018)】 

3.3.3栈在递归中的应用

【栈在函数调用中的作用和工作原理(2015、2017)】

3.3.5队列在计算机系统中的应用

【缓冲区的逻辑结构(2009)】

【多队列出队/入队操作的应用(2016)】


3.3栈和队列的应用

3.3.2栈在表达式求值中的应用

中缀表达式转后缀表达式的过程(2012、2014)】

在计算机中,中缀表达式转后缀表达式时需要借助一个栈,用于保存暂时还不能确定运算顺序的运算符。从左到右依次扫描中缀表达式中的每一项,具体转化过程如下:

1) 遇到操作数。直接加入后缀表达式。
2) 遇到界限符。若为“(”,则直接入栈;若为“)”,则依次弹出栈中的运算符,并加入后缀表达式,直到弹出“(”为止。注意,“(”直接删除,不加入后缀表达式。
3) 遇到运算符。若其优先级高于除“(”外的栈顶运算符,则直接入栈。否则,从栈顶开始,依次弹出栈中优先级高于或等于当前运算符的所有运算符,并加入后缀表达式,直到遇到一个优先级低于它的运算符或遇到“(”时为止,之后将当前运算符入栈。

按上述方法扫描所有字符后,将栈中剩余运算符依次弹出,并加入后缀表达式。
例如,中缀表达式 A+B*(C-D)-E/F 转后缀表达式的过程如表 3.1所示。

栈的深度分析(2009、2012)】

所谓栈的深度,是指栈中的元素个数,通常是给出进栈和出栈序列,求最大深度(栈的容量应大于或等于最大深度)。有时会间接给出进栈和出栈序列,例如以中缀表达式和后缀表达式的形式给出进栈和出栈序列。掌握栈的先进后出的特点进行手工模拟是解决这类问题的有效方法。

用栈实现表达式求值的分析(2018)】 

通过后缀表示计算表达式值的过程:从左往右依次扫描表达式的每一项,若该项是操作数,则将其压入栈中;若该项是操作符<op>,则从栈中退出两个操作数y和x,形成运算指令X<op>Y,并将计算结果压入栈中。当所有项都扫描并处理完后,栈顶存放的就是最后的计算结果。
例如,后缀表达式 ABCD-*+EF/-求值的过程需要 12步,见表 3.2。

 

3.3.3栈在递归中的应用

栈在函数调用中的作用和工作原理(2015、2017)】

在递归调用的过程中,系统为每一层的返回点、局部变量、传入实参等开辟了递归工作栈来进行数据存储,递归次数过多容易造成栈溢出等。而其效率不高的原因是递归调用过程中包含很多重复的计算。下面以n=5为例,列出递归调用执行过程,如图3.16所示。

显然,在递归调用的过程中,F(3)被计算2次,F(2)被计算3次。F(1)被调用5次,F(0)被调用3次。所以,递归的效率低下,但优点是代码简单,容易理解。在第5章的树中利用了递归的思想,代码变得十分简单。

可以将递归算法转换为非递归算法,通常需要借助栈来实现这种转换。

3.3.5队列在计算机系统中的应用

缓冲区的逻辑结构(2009)】

对于第一个方面,仅以主机和打印机之间速度不匹配的问题为例做简要说明。主机输出数据给打印机打印,输出数据的速度比打印数据的速度要快得多,因为速度不匹配,若直接把输出的数据送给打印机打印,则显然是不行的。

解决的方法是设置一个打印数据缓冲区,主机把要打印输出的数据依次写入这个缓冲区,写满后就暂停输出,转去做其他的事情。打印机就从缓冲区中按照先进先出的原则依次取出数据并打印,打印完后再向主机发出请求。主机接到请求后再向缓冲区写入打印数据。这样做既保证了打印数据的正确,又使主机提高了效率。由此可见,打印数据缓冲区中所存储的数据就是一个队列

多队列出队/入队操作的应用(2016)】

对于第二个方面,CPU(即中央处理器,它包括运算器和控制器)资源的竞争就是一个典型的例子。

在一个带有多终端的计算机系统上,有多个用户需要 CPU 各自运行自己的程序,它们分别通过各自的终端向操作系统提出占用CPU的请求。操作系统通常按照每个请求在时间上的先后顺序,把它们排成一个队列,每次把 CPU 分配给队首请求的用户使用。当相应的程序运行结束或用完规定的时间间隔后,令其出队,再把 CPU 分配给新的队首请求的用户使用。这样既能满足每个用户的请求,又使 CPU 能够正常运行。

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

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

相关文章

docker搭建mongo副本集

1、mongo集群分类 MongoDB集群有4种类型&#xff0c;分别是主从复制、副本集、分片集群和混合集群。 MongoDB的主从复制是指在一个MongoDB集群中&#xff0c;一个节点&#xff08;主节点&#xff09;将数据写入并同步到其他节点&#xff08;从节点&#xff09;。主从复制提供…

L56---226.翻转二叉树(广搜)---Java版

1.题目描述 2.思路和知识点 &#xff08;1&#xff09;按照每层来划分&#xff0c; 第一层是2^0&#xff08; 1&#xff09; 第二层是2^1&#xff08;2&#xff0c;3&#xff09; 第三层是2^2 &#xff08;4&#xff0c;5&#xff0c;6&#xff0c;7&#xff09; 第n层是2^(n-…

管理宝塔面板命令

管理宝塔面板命令 卸载&#xff1a; /etc/init.d/bt stop && chkconfig --del bt && rm -f /etc/init.d/bt && rm -rf /www/server/panel 堡塔命令行工具箱 &#xff08;仅限6.x以上版本的面板&#xff0c;5.x以下版本请点击右侧目录 - 旧版本管理宝…

零撸广告创业项目:撸包小游戏对接广告联盟app开发

“撸包小游戏”APP是一款专注于小游戏的应用软件&#xff0c;它为用户提供了丰富多样的小游戏选择&#xff0c;并允许开发者通过广告变现的方式获取收益。以下是关于“撸包小游戏”APP的一些关键信息&#xff1a; 广告变现&#xff1a; 广告变现是“撸包小游戏”APP中开发者获…

如何实现外部编码器轴和虚轴电子齿轮比例随动(汇川AM400PLC)

1、如何添加虚轴可以参考下面文章链接: 如何添加虚轴(AM400PLC)-CSDN博客文章浏览阅读2次。EtherCAT运动控制总线启用的时候,选择EtherCAT总线任务周期。选择好后,选择点击添加。https://blog.csdn.net/m0_46143730/article/details/139898985?csdn_share_tail=%7B%22type…

【雪花算法】

雪花算法 package com.shaoby.common.utils;import com.shaoby.common.enums.ExceptionEnum; import com.shaoby.common.exception.ApiException;import java.time.*; import java.util.*; import java.util.concurrent.CountDownLatch;/*** 雪花算法生产64位全局唯一ID* 1位符…

如何解决代码中if…else-过多的问题,建议收藏

逻辑表达模式固定的 if…else 实现与示例 if (param.equals(value1)) { doAction1(someParams); } else if (param.equals(value2)) { doAction2(someParams); } else if (param.equals(value3)) { doAction3(someParams); } // … 可重构为 Map<?, Function<?>…

【会议征稿,CPS出版】第四届管理科学和软件工程国际学术会议(ICMSSE 2024,7月19-21)

第四届管理科学和软件工程国际学术会议(ICMSSE 2024)由ACM珠海分会&#xff0c;广州番禺职业技术学院主办&#xff1b;全国区块链行业产教融合共同体&#xff0c;AEIC学术交流中心承办&#xff0c;将于2024年7月19-21日于广州召开。 会议旨在为从事管理与软件工程领域的专家学…

CentOS 6是什么意思

CentOS 6 是 CentOS 项目的一个主要版本。CentOS&#xff08;Community ENTerprise Operating System&#xff09;是一个基于开源的 Linux 发行版&#xff0c;它主要从源代码构建自 Red Hat Enterprise Linux&#xff08;RHEL&#xff09;。CentOS 6 代表了该操作系统的第六个主…

Type-C连接器厂商对检测实验室的要求及重要性解析

Type-C连接器厂商对检测实验室的要求与重要性 Type-C连接器作为一种高速、全功能的接口标准&#xff0c;被广泛应用于各类电子产品中。作为Type-C连接器的制造商&#xff0c;对于产品的质量和性能要求是至关重要的。为了确保产品符合规范并满足市场需求&#xff0c;Type-C连接…

应用篇| 深入浅出LLM应用之RAG

相信很多人都使用过LLM大模型&#xff0c;但是现有大模型或多或少都有以下问题&#xff1a; LLM幻觉问题&#xff1a;从《【小白入门篇1】GPT到底是怎样练成&#xff1f;》我们知道虽然大模型现在能力很强,但是本质就是在做文字接龙,而且每次接龙都具有随机性, 导致模型有时候…

vb6中for循环怎么写

在 VB6 中&#xff0c;for 循环可以使用以下语法来编写&#xff1a; For counter start To end [Step stepValue] 循环体代码 Next [counter]其中&#xff1a; counter是循环计数器变量&#xff0c;它在循环过程中逐步递增或递减。 start是计数器变量的初始值。 end是计数器…

EtherCAT数据包抓取(wireshark)

目录 1、twincat配置 2、选择正确的网卡 3、过滤条件示例 (1) 过滤逻辑读的数据帧 (2) 过滤邮箱等配置数据 (3) 抓取读EtherCAT状态的数据帧 1、twincat配置 勾选 Device2->Adapter->Promiscuous Mode&#xff0c;重新激活配置。 2、选择正确的网卡 3、过滤条件示…

图(数据结构篇)

数据结构之图 图 概念&#xff1a; 一个图(graph)G(V,E)由顶点集V和边集E组成&#xff0c;每一条边就是一个点对(u,w)&#xff0c;其中u&#xff0c;w∈V&#xff0c;有时边称作弧&#xff0c;如果点对是有序的&#xff0c;那么组成的图叫做有向图&#xff0c;反之就是无向图…

【C语言】--- 常见调试信息预处理器宏

在编程的艺术世界里,代码和灵感需要寻找到最佳的交融点,才能打造出令人为之惊叹的作品。而在这座秋知叶i博客的殿堂里,我们将共同追寻这种完美结合,为未来的世界留下属于我们的独特印记。【C语言】--- 常见调试信息预处理器宏 开发环境一、 `__FILE__`二、`__LINE__`三、 `…

2. 数据结构分析即索引库的crud

1. 数据库脚本 DROP TABLE IF EXISTS tb_hotel; CREATE TABLE tb_hotel (id bigint(0) NOT NULL,name varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL DEFAULT COMMENT 酒店名称,address varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_090…

【推荐100个unity插件之21】unity实现多语言切换功能——Localization插件的使用

文章目录 前言优缺点优点缺点 安装创建配置选择语言选择默认语言创建多语言表数据创建key配置不同语言文本预加载绑定不同多语言文本数据&#xff0c;并显示语言切换自己编写按钮控制语言切换多语言图片切换在构建中使用Localization分析错误修复动态修改多语言文本内容参考推荐…

Django 模版变量

1&#xff0c;模版变量作用 模板变量使用“{{ 变量名 }}” 来表示模板变量前后可以有空格&#xff0c;模板变量名称&#xff0c;可以由数字&#xff0c;字母&#xff0c;下划线组成&#xff0c;不能包含空格模板变量还支持列表&#xff0c;字典&#xff0c;对象 2&#xff0c;…

一文解释IO端口与网络端口

计算机的端口可以分为两类&#xff1a;I/O端口和网络端口。每一类都有其特定的功能和应用。以下是对这两类端口的详细介绍。 I/O端口 定义 I/O端口是用于计算机与外围设备之间通信的接口。每个I/O端口都对应一个唯一的地址&#xff0c;操作系统和程序通过这些地址与设备通信。 …

SWAT模型【建模方法、实例应用、高级进阶技能】

第一部分&#xff1a;SWAT模型实践部分 一 SWAT模型及应用介绍 1.1 面源污染概要 1.2 SWAT模型及应用 1.3 SWAT模型原理 1.4 SWAT模型输入文件 1.5 ArcGIS与SWAT关系 二 SWAT模型中GIS 必备技术 2.1 GIS软件平台 2.2 ArcGIS10.6安…