数据结构历年考研真题对应知识点(栈)
目录
3.1栈
3.1.1栈的基本概念
【栈的特点(2017)】
【入栈序列和出栈序列之间的关系(2022)】
【特定条件下的出栈序列分析(2010、2011、2013、2018、2020)】
3.1.2栈的顺序存储结构
【出/入栈操作的模拟(2009)】
3.1栈
3.1.1栈的基本概念
【栈的特点(2017)】
栈(Stack)是只允许在一端进行插入或删除操作的线性表。首先栈是一种线性表,但限定这种线性表只能在某一端进行插入和删除操作。

栈顶(Top)。线性表允许进行插入删除的那一端
栈底(Bottom)。固定的,不允许进行插入和删除的另一端。
空栈。不含任何元素的空表。
每接触一种新的数据结构,都应从其逻辑结构、存储结构和运算三个方面着手。
【入栈序列和出栈序列之间的关系(2022)】
【特定条件下的出栈序列分析(2010、2011、2013、2018、2020)】
假设某个栈S=(a1, a2, a3, a4,a5),如图 3.1 所示,则 a1 为栈底元素,a5为栈顶元素。
栈只能在栈顶进行插入和删除操作,进栈次序依次为a1,a2,a3,a4,a5,而出栈次序为 a5,a4,a3,a2,a1。
由此可见,栈的操作特性可以明显地概括为后进先出(Last In First Out,LIFO)。
3.1.2栈的顺序存储结构
【出/入栈操作的模拟(2009)】
栈操作的示意图如图 3.2 所示,图 3.2(a)是空栈,图 3.2(c)是A、B、C、D、E共5个元素依次入栈后的结果,图 3.2(d)是在图 3.2(c)之后E、D、C的相继出栈,此时栈中还有2个元素,或许最近出栈的元素 C、D、E仍在原先的单元存储着,但 top 指针已经指向了新的栈顶,元素 C、D、E已不在栈中,读者应通过该示意图深刻理解栈顶指针的作用。

下面是顺序栈上常用的基本操作实现:
(1)初始化
void InitStack(SqStack &S){S.top=-1; //初始化栈顶指针
}
(2)判栈空
bool StackEmpty(SqStack S){if(S.top==-1) //栈空return true; else //不空return false;
}
(3)进栈
bool Push(SqStack &S,ElemType x){if(S.top==MaxSize-1) //栈满,报错return false;S.data[++S.top]=x; //指针先加1,再入栈return true;
}
(4)出栈
bool Pop(SqStack &S,ElemType &x){if(S.top==-1) //栈空,报错return false;x=S.data[S.top--]; //先出栈,指针再减1return true;
}
(5)读取栈顶元素
bool GetTop(SqStack S,ElemType &x){if(S.top==-1) //栈空,报错return false;x=S.data[S.top];//x记录栈顶元素return true;
}
仅为读取栈顶元素,并没有出栈操作,因此原栈顶元素依然保留在栈中。
注意:
这里的 top 指的是栈顶元素。于是,进栈操作为 S.data[++S.top]=x,出栈操作为x=S.data[S.top--]。若栈顶指针初始化为S.top=0,即 top 指向栈顶元素的下一位置,则入栈操作变为S.data[S.top++]=x;出栈操作变为x=S.data[--S.top]。相应的栈空栈满条件也会发生变化。
相关文章:
数据结构历年考研真题对应知识点(栈)
目录 3.1栈 3.1.1栈的基本概念 【栈的特点(2017)】 【入栈序列和出栈序列之间的关系(2022)】 【特定条件下的出栈序列分析(2010、2011、2013、2018、2020)】 3.1.2栈的顺序存储结构 【出/入栈操作的模拟(2009)】 3.1栈 3.1.1栈的基本概念 【栈…...
BarTender版软件下载及安装教程
根据行业数据显示强大的配套应用软件甚至能够管理系统安全性、网络打印功能、文档发布、打印作业记录等,为满足不同的需要和预算,BarTender 提供四个版本,每个都拥有卓越的功能和特性。根据软件大数据显示多国语言支持:轻松设计…...
Python 中从字典中提取所有值到列表
目录: 使用 keys() 方法使用 values() 方法使用 items() 方法使用 * 解包使用列表推导式使用 lambda 函数有时候,在使用 Python 字典时,只关心获取字典的值而不关心字典的键。可以使用多种方法从字典中获取所有的值。 使用 keys() 方法 Python 字典(Dictionary) keys() 方…...
Netty中Reactor线程的运行逻辑
Netty中的Reactor线程主要干三件事情: 轮询注册在Reactor上的所有Channel感兴趣的IO就绪事件。 处理Channel上的IO就绪事件。 执行Netty中的异步任务。 正是这三个部分组成了Reactor的运行框架,那么我们现在来看下这个运行框架具体是怎么运转的~~ 这…...
liunx 搭建 zookeeper
创建下载路径 #创建文件夹 mkdir -p /mydata/zookeeper #进入文件夹 cd /mydata/zookeeper下载zookeeper文件 #下载 wget https://mirrors.aliyun.com/apache/zookeeper/zookeeper-3.5.9/apache-zookeeper-3.5.9-bin.tar.gz #解压文件 tar -zxvf apache-zookeeper-3.5.9-bin.…...
selenium 3中等待方式
Selenium 3中的等待方式主要有三种:强制等待、隐式等待和显式等待(智能等待的一种)。 1. 强制等待:使用time.sleep(X)方法,强制让浏览器等待X秒,无论当前操作是否完成,都…...
pytorch笔记:named_parameters
named_parameters 是 PyTorch 中一个非常有用的函数,用于访问模型中所有定义的参数及其对应的名称。它是 torch.nn.Module 类的方法之一,返回一个生成器,生成 (name, parameter) 对,name 是参数的名称,parameter 是对应…...
uniapp——H5添加支付宝授权登录,报错:系统异常,请联系商家。REDIRECT_URI_ILLEAGAL
解决方法 https://opensupport.alipay.com/support/FAQ/41bb980b-d18e-4141-8063-9d172cb7e655 这其中最常见的是授权的回调地址配置的不正确 应该为域名后面加上你H5打包后的名字,例如 https://www.xxx.com/agent要正确配置支付宝授权登录的回调地址,…...
群辉NAS使用Kodi影视墙
目录 一、KODI安装 二、修改UI语言 1、修改显示字体 2、修改语言为中文 四、添加媒体库 五、观看电影 五、高级设置 1、视图类型 2、修改点击播动作 五、补充 1、文件组织结构及命名 2、电影信息的刮削 (1)添加影片 (2)演员管理 (3)影片管理 (4)说明 K…...
如何实现HPC数据传输的高效流转,降本增效?
高性能计算(HPC)在多个行业中都有应用,涉及到HPC数据传输的行业包括但不限于: 1.科学研究:在物理学、化学、生物学、地球科学等领域进行模拟和建模。 2.工程和产品设计:进行复杂系统的设计和分析…...
redis 定时任务锁 分布式锁
基于 redisTemplate 在分布式集群环境中的最佳实践,其实无论是单机还是集群,保证原子性都是第一位的,如果能同时保证性能和高可用,那么就是一个可靠的分布式锁解决方案。 主要思路是:设置锁时,使用 redis…...
了解支付行业基本专业语
1、商户简称做什么? 商户简称是消费者支付时显示的名称。 2、客服电话哪里显示? 客服电话是如果用户对订单有疑问,可通过客服电话联系到您这边。会在支付成功后,微信(支付宝)支付的订单里面显示。 3、什么叫T1/T0、D1/D0 T1为第二个工作日到账&am…...
408数据结构-图的应用1-最小生成树 自学知识点整理
前置知识:图的遍历 图的应用是408初试历年考查的重点。不过一般而言,这部分内容直接以算法设计题形式考查的可能性极小,更多的是结合图的实例来考查算法的具体操作过程,要求掌握的是手推模拟给定图的各个算法执行过程。此外&#…...
Ubuntu18.04操作系统使用pip3安装open cv
在Ubuntu18.04操作系统环境下使用pip3安装opencv。安装方法如下: #pip3安装 sudo apt-get install python3-pip # 依赖包安装 sudo apt-get install libsm6 libxrender1 libxext6 #opencv安装;版本号自行填写 pip3 install opencv-python4.1.1.26 具体步骤 1、确认…...
为什么变量不可以在 switch 语句中声明定义?
目录 1.引言 2.switch语句的基本用法 3.为何不能在switch语句中声明变量 3.1.作用域问题 3.2.跳转语句的限制 4.解决方案 4.1.在switch语句之前声明变量 4.2.使用花括号创建新的作用域 5.总结 1.引言 在C/C等编程语言中,switch语句是一种常见的控制流结构&…...
手机定位技术全解析:原理、发展与应用
1. 引言 背景介绍 最近,神仙姐姐刘亦菲主演的电视剧《玫瑰的故事》中的一段情节引发了广泛讨论。剧中,方协文(丈夫)对玫瑰(妻子)的控制欲变本加厉,竟然偷偷在她的手机上安装监控软件ÿ…...
深入探索Kylin的Cube构建:数据魔方的构建之旅
深入探索Kylin的Cube构建:数据魔方的构建之旅 引言 Apache Kylin是一个开源的分布式分析引擎,提供Hadoop和Spark之上的高性能数据立方体(Cube)技术。Kylin的Cube构建过程是其核心功能之一,它允许用户定义和构建多维数…...
web渗透-CSRF漏洞
一、简介 cross-site request forgery 简称为"csrf",在csrf的攻击场景中攻击者会伪造一个请求(这个请求一般是一个链接),然后欺骗目标用户进行点击,用户一旦点击了这个请求,整个攻击就完成了。所以csrf攻击也为"o…...
Python数据分析-电信客户流量预测与分析
一、背景介绍 研究背景:在快速发展和高度竞争的电信行业中,客户流失已成为运营商面临的主要挑战之一。电信服务的普及和用户选择的多样性使得保持客户忠诚度变得越来越困难。在这种背景下,准确预测客户流失并采取相应措施,对于运…...
动态人物抠图换背景 MediaPipe
pip下载 MediaPipe pip install mediapipe -i 手部特征点模型包包含一个手掌检测模型和一个手部特征点检测模型。手掌检测模型在输入图片中定位手部,手部特征点检测模型可识别手掌检测模型定义的被剪裁手掌图片上的特定手部特征点。 由于运行手掌检测模型非常耗时&…...
css实现圆环展示百分比,根据值动态展示所占比例
代码如下 <view class""><view class"circle-chart"><view v-if"!!num" class"pie-item" :style"{background: conic-gradient(var(--one-color) 0%,#E9E6F1 ${num}%),}"></view><view v-else …...
渗透实战PortSwigger靶场-XSS Lab 14:大多数标签和属性被阻止
<script>标签被拦截 我们需要把全部可用的 tag 和 event 进行暴力破解 XSS cheat sheet: https://portswigger.net/web-security/cross-site-scripting/cheat-sheet 通过爆破发现body可以用 再把全部 events 放进去爆破 这些 event 全部可用 <body onres…...
MVC 数据库
MVC 数据库 引言 在软件开发领域,Model-View-Controller(MVC)是一种流行的软件架构模式,它将应用程序分为三个核心组件:模型(Model)、视图(View)和控制器(Controller)。这种模式有助于提高代码的可维护性和可扩展性。本文将深入探讨MVC架构与数据库之间的关系,以…...
高危文件识别的常用算法:原理、应用与企业场景
高危文件识别的常用算法:原理、应用与企业场景 高危文件识别旨在检测可能导致安全威胁的文件,如包含恶意代码、敏感数据或欺诈内容的文档,在企业协同办公环境中(如Teams、Google Workspace)尤为重要。结合大模型技术&…...
uniapp微信小程序视频实时流+pc端预览方案
方案类型技术实现是否免费优点缺点适用场景延迟范围开发复杂度WebSocket图片帧定时拍照Base64传输✅ 完全免费无需服务器 纯前端实现高延迟高流量 帧率极低个人demo测试 超低频监控500ms-2s⭐⭐RTMP推流TRTC/即构SDK推流❌ 付费方案 (部分有免费额度&#x…...
零基础设计模式——行为型模式 - 责任链模式
第四部分:行为型模式 - 责任链模式 (Chain of Responsibility Pattern) 欢迎来到行为型模式的学习!行为型模式关注对象之间的职责分配、算法封装和对象间的交互。我们将学习的第一个行为型模式是责任链模式。 核心思想:使多个对象都有机会处…...
Caliper 配置文件解析:config.yaml
Caliper 是一个区块链性能基准测试工具,用于评估不同区块链平台的性能。下面我将详细解释你提供的 fisco-bcos.json 文件结构,并说明它与 config.yaml 文件的关系。 fisco-bcos.json 文件解析 这个文件是针对 FISCO-BCOS 区块链网络的 Caliper 配置文件,主要包含以下几个部…...
鸿蒙DevEco Studio HarmonyOS 5跑酷小游戏实现指南
1. 项目概述 本跑酷小游戏基于鸿蒙HarmonyOS 5开发,使用DevEco Studio作为开发工具,采用Java语言实现,包含角色控制、障碍物生成和分数计算系统。 2. 项目结构 /src/main/java/com/example/runner/├── MainAbilitySlice.java // 主界…...
AI,如何重构理解、匹配与决策?
AI 时代,我们如何理解消费? 作者|王彬 封面|Unplash 人们通过信息理解世界。 曾几何时,PC 与移动互联网重塑了人们的购物路径:信息变得唾手可得,商品决策变得高度依赖内容。 但 AI 时代的来…...
重启Eureka集群中的节点,对已经注册的服务有什么影响
先看答案,如果正确地操作,重启Eureka集群中的节点,对已经注册的服务影响非常小,甚至可以做到无感知。 但如果操作不当,可能会引发短暂的服务发现问题。 下面我们从Eureka的核心工作原理来详细分析这个问题。 Eureka的…...
