首页 > 其他分享 >数据结构历年考研真题对应知识点(栈和队列的应用)

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

时间:2024-06-23 09:59:37浏览次数:3  
标签:知识点 递归 真题 后缀 运算符 队列 3.3 表达式 考研

目录

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 能够正常运行。

标签:知识点,递归,真题,后缀,运算符,队列,3.3,表达式,考研
From: https://blog.csdn.net/qq_64017312/article/details/139895424

相关文章

  • MySQL 面试突击指南:核心知识点解析2
    事务并发可能引发的问题MySQL是一个客户端/服务器架构的软件,对于同一个服务器来说,可以有多个客户端与之连接,每个客户端与服务器连接后,可以称为一个会话(Session)。每个客户端都可以在自己的会话中向服务器发出请求语句,一个请求语句可能是某个事务的一部分,也就是说,服务器可能......
  • 2024年华为OD机试真题-生成哈夫曼树-(C++/Java/python)-OD统一考试(C卷D卷)
    题目描述给定长度为n的无序的数字数组,每个数字代表二叉树的叶子节点的权值,数字数组的值均大于等于1。请完成一个函数,根据输入的数字数组,生成哈夫曼树,并将哈夫曼树按照中序遍历输出。为了保证输出的二叉树中序遍历结果统一,增加以下限制:二叉树节点中,左节点权值小于右节点......
  • 2024华为OD机试真题- 找出作弊的人-(C++/Python)-C卷D卷-100分
     2024华为OD机试题库-(C卷+D卷)-(JAVA、Python、C++) 题目描述公司组织了一次考试,现在考试结果出来了,想看一下有没人存在作弊行为,但是员工太多了,需要先对员工进行一次过滤,再进一步确定是否存在作弊行为。过滤的规则为:找到分差最小的员工ID对(p1,p2)列表,要求p1<......
  • 软考高级论文真题“论湖仓一体架构及其应用”
    论文真题随着5G、大数据、人工智能、物联网等技术的不断成熟,各行各业的业务场景日益复杂,企业数据呈现出大规模、多样性的特点,特别是非结构化数据呈现出爆发式增长趋势。在这一背景下,企业数据管理不再局限于传统的结构化OLTP(On-LineTransactionProcessing)数据交易过程,而......
  • JavaScript基础部分知识点总结(Part5)
    注册事件(绑定事件)1.注册事件概述给元素添加事件,称为注册事件或者绑定事件。注册事件有两种方式:传统方式和方法监听注册方式传统注册方式:利用on开头的事件onclick<buttonοnclick=“alert('hi~')”></button>btn.onclick=function(){}特点:注册事件的唯一性同一个元素同......
  • 优先级队列(堆)的知识点详解
    目录1.优先级队列1.1概念2.优先级队列的模拟实现2.1堆的概念2.2堆的存储方式2.3堆的创建2.3.1堆向下调整2.4堆的插入与删除2.4.1堆的插入2.4.2堆的删除3.常用接口介绍3.1PriorityQueue的特性3.2PriorityQueue常用接口介绍1.优先级队列1.1概念前......
  • 计算机网络:408考研|重要拓展内容|冷门考点|英文缩写词(完结撒花~)
    系列目录408计算机网络总纲领更新日志6.15物理层的接口特性,修改了部分排版问题6.17数据链路层的拥塞控制,补充部分额外英文缩写词6.21考纲中明确提到的物理层的信源与信宿;数据链路层的ALOHA协议和令牌传递协议;以及运输层的UDP校验目录系列目录更新日志拓展......
  • 2024年华为OD机试真题-分披萨-(C++/Java/python)-OD统一考试(C卷D卷)
    题目描述"吃货"和"馋嘴"两人到披萨店点了一份铁盘(圆形)披萨,并嘱咐店员将披萨按放射状切成大小相同的偶数个小块。但是粗心的服务员将披萨切成了每块大小都完全不同奇数块,且肉眼能分辨出大小。由于两人都想吃到最多的披萨,他们商量了一个他们认为公平的分法:从"吃货"开始,轮流......
  • 2020C++等级考试二级真题题解
     202012数组指定部分逆序重放c++ #include<iostream>usingnamespacestd;intmain(){  inta[110];  intn,k;  cin>>n>>k;  for(inti=0;i<n;i++){    cin>>a[i];  }  for(inti=0;i<k/2;i++){......
  • cv知识点(卷积和池化)
    一、卷积的基本属性1.卷积核(Kernel):卷积操作的感受野,直观理解就是一个滤波矩阵,普遍使用的卷积核大小为3×3、5×5等;2.步长(Stride):卷积核遍历特征图时每步移动的像素,如步长为1则每次移动1个像素,步长为2则每次移动2个像素(即跳过1个像素),以此类推;3.填充(Padding):处理特征图边界的方......