【数据结构】栈(上)2021-11-14

数据结构——栈PTA习题 文章目录单选题函数题6-1 在一个数组中实现两个堆栈 (29分)输入样例:输出样例:代码6-2 另类堆栈 (21分)输入样例:输出样例:代码编程题7-1 符号配对 (30分)输入格式:输出格式:输入样例1:输出样例1:输入样例2:输出样例2:输入样例3:输出样例3:代码 单选题 题号 题目 答案 1 假设有5个整数以1、2、3、4、5的顺序被压入堆栈,且出栈顺序为3、5、4、2、1,那么为了获得这样的输出,堆栈大小至少为: 4 2 设一个栈的输入序列是1、2、3、4、5,则下列序 阅读详情

今天有点忙,就少更点内容吧。
今天学栈。
栈是限定仅在表尾进行插入和删除操作的线性表。
栈有入栈和出栈两种操作,遵照先入后出原则,就像弹匣中的子弹一样。

请添加图片描述
单栈,有最大容量和一个栈顶,每个栈空间容纳一个元素,栈顶就是最后进入的元素,也是表尾

#include <stdio.h>
#define MAXSIZE 100 
#define OK 1
#define ERROR 0
typedef int SElemType;
typedef int Status;
typedef struct
{
	SElemType data[MAXSIZE];
	int top;
}SqStack;

入栈/压栈/进栈
先判断是否满栈,如未满,则栈顶向上移一位,将数据存入新栈顶

出栈/弹栈
先判断是否满栈,如未满,则将栈顶数据传给指针,栈顶向下移一位。
注意入栈和出栈的操作顺序有差异。

 Status Push(SqStack *s, SElemType e)
 {
 	if(s->top==MAXSIZE-1)
 	    return ERROR;
 	s->top++;
 	s->data[s->top]=e;
 	return OK;
 }
 
 Status Pop(SqStack *s, SElemType *e)
 {
 	if(s->top==-1)
 	    return ERROR;
 	*e=s->data[s->top];
 	s->top--;
 	return OK;
 }

两栈共享空间:
两个栈合并,有两个栈顶,一个从0开始加,一个从最大值开始减。
请添加图片描述

typedef struct 
 {
 	SElemType data[MAXSIZE];
 	int top 1;
 	int top 2;
 }SqDoubleStack;

共享栈入栈:
由于现在有两个栈顶,判断满栈的方法不同。
判断栈顶1加1是否等于栈顶2.
所以用此方法判断是否满栈,再判断要入哪一个栈(StackNumber),接着栈顶上移(相对中心),数据赋值。

Status DPush(SqDoubleStack *s,SElemType e,int StackNumber)
 {
 	if(s->1+1==s->2)
 	    return ERROR;
 	if(StackNumber==1)
 	    s->data[++s->top1]=e;
 	else if(StackNumber==2)
 	    s->data[--s->top2]=e;
 	return OK;
 }

共享栈出栈
先判断要出哪一个栈,再判断是否栈为空,
之后,先取数据再栈顶下移(相对中心)

Status DPop(SqDoubleStack *s,SElemType *e,int StackNumber)
{
	if(StackNumber==1)
	{
		if(s->top1==-1)
		    return ERROR;
		*e=s->data[s->top1--]
    }
    else if(StackNumber==2)
    {
    	if(s->2==MAXSIZE)
    	    return ERROR;
    	*e=s->data[s-top>2++];
    	
    }
    return OK;
}


——————————————————————————————————————————————————
坚持写博客的第三天,上学真忙啊,简直是忙里偷闲
每日一名言:
希望之花,盛开在梦想的道路上。
The flower of hopeness is blessing on the road of dream.

栈数据合并——华为2023.5.10 如: 依次向栈压入6、1、2、3,当压入2时,栈顶至栈底依次为[2、1、6];当压入3时,3=2+1,3、2、1全部出栈,重新入栈整数6(此时n1=3,因此m=2×3=6),此时栈顶至栈底依次为[6、6];6=6,两个6全部出栈,压入12(此时n1=6,因此m=2×6=12),最终栈中只剩一个元素12.最终栈中存留的元素值,元素值使用单个空格隔开,如”8 7 6 5”,从左至右依次为栈顶至栈底的数字。1.如果n1=n2,则n1、n2全部出栈,压入新数据m(m=2×n1);正整数大小为[1,2^31-1]。 阅读详情

相关推荐

【100%通过率】2024华为OD机试真题E卷 C++ 实现【栈数据合并/空栈压数】

向一个空栈压入正整数,每当压入一个整数时,执行以下规则(设: 栈顶至栈底整数依次编号为n1、n2...nx, n1为最新压入的整数)

MISAYAONE的博客 1553

1、栈数据合并(华为机考)

【代码】1、栈数据合并(华为机考)

m0_48711099的博客 946

C++栈数据结构实现及实战

在计算机科学中,栈是一种遵从后进先出(LIFO, Last In First Out)原则的数据结构。它只允许在栈的一端进行添加数据(压栈)或移除数据(弹栈)的操作。这种结构类似于一摞盘子,最后放上去的盘子将是第一个被取下的。栈的元素通常具有以下特征:- 有限性:栈中的元素数量是有限的。- 可访问性:在栈顶位置可以轻松访问到元素。- 动态性:栈的大小可以根据需要动态增长和减少。在C++中,类是一种用户自定义的数据类型,它可以将数据和函数封装在一起。类的定义由关键字class。

weixin_35734408的博客 866

合并表记录

数据表记录包含表索引和数值,请对表索引相同的记录进行合并,即将相同索引的数值进行求和运算,输出按照key值升序进行输出。 #include #include using namespace  std;   int  main(){      int n;      mapint,int> m;      cin>>n;

ScutKevinYzy的博客 372

数据结构的顺序栈的逆置和合并

数据结构的顺序栈的逆置和合并 头部如下 /* 实验4-1的C语言参考程序如下: */ # include "stdio.h" # define DATATYPE1 int # define MAXSIZE 100 typedef struct { DATATYPE1 datas[MAXSIZE]; int last; }SEQUENLIST;

结合qtdesigner,用pyqtgraph在界面上绘制波形图(一)

思路:先画图,然后在qtdesigner上放一个容器,给这个容器添加一个布局,然后把图当作一个Widget放入布局中。二、PyUIC把test.ui转换成test.py,再新建一个load_test.py写脚本。就这么简单,基础部分就完成了。也可以给它添加样式,我知道的样式不算多,但会继续写。一、随便拖进来一个容器控件,我拖了一个Widget。要想把波形图显示在界面上,核心思想其实很简单。三、load_test.py的代码。

learninger_lt7的博客 1803

计蒜客 合并数字【栈】

题目链接 解题思路 我们利用栈一边输入一边判断,如果两数之间相差1,就往后输入,或者将栈顶元素输出,接着去栈中找前边的元素接着比较就行了。 代码部分 #include &lt;iostream&gt; #include &lt;stdio.h&gt; #include &lt;string.h&gt; #include &lt;algorithm&gt; #include &l...

长颜草的博客 305

保姆级教程:用CST 2023一步步复现一个1-8GHz Vivaldi天线(含参数优化与结果分析)

本文提供了一份详细的CST 2023教程,指导读者如何从零开始设计并优化1-8GHz Vivaldi天线。内容涵盖工程设置、参数化建模、仿真加速技巧以及性能优化策略,特别适合需要实现宽带天线设计的工程师和研究人员。通过实战案例,帮助用户掌握Vivaldi天线的核心设计要点和CST高级功能应用。

weixin_30800987的博客 619

2021-01-14 0x11 基本数据结构-栈

1.题意: 2.题解: 3.ac代码: 在这里插入代码片 1.题意: 2.题解: 3.ac代码: 在这里插入代码片 1.题意: 2.题解: 3.ac代码: 在这里插入代码片 1.题意: 2.题解: 3.ac代码: 在这里插入代码片 ...

weixin_46064382的博客 127

MySQL连接异常:Communications link failure 解决方案

困扰一晚上的问题终于解决了。

weixin_44704776的博客 1086

手把手教你绕过Incapsula reese84防护:从JS反混淆到动态Token生成全流程

本文深入解析了以Incapsula reese84为代表的现代Web客户端挑战防护机制,详细介绍了从JS反混淆、算法逆向到动态Token生成的全流程实战方法。文章系统阐述了如何通过模拟浏览器指纹、移植关键算法或嵌入JS引擎来构建自动化应对策略,并提供了稳健的令牌管理与系统架构设计思路,帮助开发者在合规前提下提升自动化工具的适应性。

jenkins8butler的博客 518

2021 王道考研 数据结构+习题讲解

2021 王道考研 数据结构 P1【2021版】0.0 课程指南 P2【2021版】1.1.0 开篇_数据结构在学什么 P3【2021版】1.1.1 数据结构的基本概念 P4【2021版】1.2.1 算法的基本概念 P5【2021版】1.2.2 算法的时间复杂度 P6【2021版】1.2.3 算法的空间复杂度 P7【2021版】2.1_线性表的定义和基本操作 P8【2021版】2.2.1_顺序表的定义 P9【2021版】2.2.2_1_顺序表的插入删除 P10【2021版】2.2.2_2_顺序表的查找 P1

weixin_47312141的博客 4万+

告别理论纠结!用ADS和Sigrity玩转电源完整性:从PDN阻抗优化到芯片供电仿真全流程

本文详细介绍了如何利用ADS和Sigrity工具进行电源完整性(PI)分析,从PDN阻抗优化到芯片供电仿真的全流程。通过频域、直流和时域分析,工程师可以精确评估电源网络性能,优化设计以避免电压波动和系统失效。文章还提供了ADS和Sigrity PowerDC的实战操作指南,帮助读者掌握现代PI设计的核心技术。

weixin_33749242的博客 310

2021-10-16【严蔚敏数据结构代码实现合集】【c语言学习必备】

线性表 2021-9-14【数据结构/严蔚敏】【顺序表】【代码实现算法2.1-2.7】 2021-9-18【数据结构/严蔚敏】【单链表】【代码实现算法2.8-2.12】 2021-9-18【数据结构/严蔚敏】【静态链表】【代码实现算法2.13-2.17】 2021-9-19【数据结构/严蔚敏】【双向链表】【代码实现算法2.18-2.19】 2021-9-19【数据结构/严蔚敏】【带头结点的线性表】【代码实现算法2.20-2.21】 2021-9-19【数据结构/严蔚敏】【一元多项式的表示及相加、相减、相乘

eternity_memory的博客 1万+

【安卓逆向】python版本 sha源码

免责声明本文内容仅供学习交流使用,严禁用于商业和非法用途。抓包数据、敏感网址以及数据接口已进行脱敏处理。 注:如有引用,请标注文章地址!!!!!!!

Coodekun的博客 817

面向 OData V4 的 Fiori elements 为何强制使用 draft、它到底是什么、以及是否能关闭

本文深入解析了SAP Fiori elements中draft handling的核心机制与必要性。关键点包括:1)draft机制通过中间版本实现复杂编辑的安全恢复与并发控制;2)Fiori elements for OData V4强制要求draft-enabled服务支持事务编辑;3)非draft服务仅适用于只读场景;4)替代方案需承担完全自定义开发的成本。文章基于SAP官方文档,系统阐述了draft在事务型应用中的基础性作用,为架构决策提供了明确指导。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 268

2021 王道考研 数据结构+习题讲解_王道课后题pdf

链接: https://pan.baidu.com/s/1GievaM8_-gBOEA-fV6GqYg 提取码: vshu 复制这段内容后打开百度网盘手机App,操作更方便哦[知识强化]第三章 栈和队列。链接: https://pan.baidu.com/s/1JwhYC3fHlgUTgr8qh0n3xQ 提取码: kv8s 复制这段内容后打开百度网盘手机App,操作更方便哦[知识强化]第八章 排序。

2501_90391156的博客 1392

基于YOLOv10深度学习的花生种子霉变检测系统

YOLO(You Only Look Once)是当前最先进的目标检测算法之一,具有快速、精准的特性。YOLOv10是YOLO系列的最新版本,相较于之前的版本,YOLOv10在特征提取、模型精度和速度上都有了显著的提升。YOLOv10采用了更深的卷积神经网络、更多的跨层特征融合方法,使得其在不同尺寸物体的检测和复杂场景的处理上都表现出了优异的性能。YOLOv10特别适合应用在需要快速处理并检测大量图像的任务中,如花生种子霉变检测等,能够实现精准、高效的检测。

2201_76125393的博客 648

BUAA(2021春)栈操作(栈-基本题)

BUAA数据结构第四次编程题——栈操作(栈-基本题)看前须知题目内容问题描述输入形式输出形式样例样例说明题解易错点和难点参考代码补充测试的数据 看前须知 要点介绍和简要声明. 题目内容 问题描述 假设给定的整数栈初始状态为空,栈的最大容量为100。从标准输入中输入一组栈操作,按操作顺序输出出栈元素序列。栈操作:1表示入栈操作,后跟一个整数**(不为1、0和-1)为入栈元素**;0表示出栈操作;-1表示操作结束。 输入形式 从标准输入读取一组栈操作,入栈的整数和表示栈操作的整数之间都以一个空格分隔。 输出形式

zhouEnshen的博客 2871

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

数据结构之栈定义及基本操作实现

    终于有可以有时间写点数据结构的学习总结了,前段时间一直在紧张的忙一些项目,都没有空出时间来学习数据结构,现在终于可以稍微喘口气了,还是数据结构有意思,这两天看了点栈的东西,写下来总结一下,有错误的地方希望看到的朋友指出来,感激不尽。   根据学习,栈就是一种线性数据结构,栈的运算只能在表的一段进行,所以这种数据结构具有“后进先出”的特点。   接下来是栈的c语言实现。其...

shouwangyunkai666的博客 1082

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

数据结构-栈(7.14)

文章目录写在最前一、栈的基本概念二、栈的顺序存储结构三、栈的链式存储结构四、易错试题写在最后 写在最前 一、栈的基本概念 二、栈的顺序存储结构 三、栈的链式存储结构 四、易错试题 写在最后 ...

liangsena的博客 393

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

波波的数据结构-栈

系列文章目录 波波的数据结构属实上的快,这里将会写些pta的解析,算是复习 预习,帮助我与大家期末不挂科 文章目录系列文章目录栈一、选择题 栈 一、选择题 2-1 若顺序栈的栈顶指针指向栈顶元素位置,则压入新元素时,应( A)。 A.先移动栈顶指针 B.先存入元素,再移动栈顶指针 C.先后次序无关紧要 D.同时进行 解析:看书上代码易得,顺序栈实际上是在结构体中定义一个数组,栈顶指针是数组的下标,下标加一后数组存入一个元素 2-2 链式栈与顺序栈相比,一个比较明显的优点是( B)。 A.插入操作

weixin_45458350的博客 1561

先进后出的数据结构-栈 一

1. 栈的概念 在开始前,请牢记这句话:栈是一种先进后出的数据结构。 栈(stack)是限定仅在表的一端进行操作的数据结构,请联系我们前文所学的,设想一个单链表我们只能够对其链表的表尾结点进行操作,而操作也只能够进行插入一个新的结点与删除最末尾的这个结点两个操作,而这样强限制性的‘链表’,就是我们所说的栈。 让我们重新理顺一下定义:栈是一个线性的数据结构,规定这个数据结构只允许在其中一端进行操作,并禁止直接访问除这一端以外的数据。 如图:栈就像一个放球的单管桶,只允许球从桶的开口这一端取出,

m0_60226024的博客 1489

[数据结构] 栈 · Stack

Stack 继承了 Vector(动态顺序表)返回一个表示表达式值的整数。

Boop_wu的博客 1104

数据结构第三章栈与队列

判断题 1-1 若一个栈的输入序列为1,2,3,…,N,输出序列的第一个元素是i,则第j个输出元素是j−i−1。F 1-2 所谓“循环队列”是指用单向循环链表或者循环数组表示的队列。F 1-3 在对不带头结点的链队列作出队操作时,不会改变头指针的值。F 1-4 不论是入队列操作还是入栈操作,在顺序存储结构上都需要考虑"溢出"情况。T 1-5 队列和栈都是运算受限的线性表,只允许在表的两端进行运算。F 1-6 栈和队列的存储方式,既可以是顺序方式,也可以是链式方式。T 1-7 循环队列也存在着空间溢出问题。T

qq_43592674的博客 1万+

使用C语言实现栈数据结构以及栈的应用

栈(stack)是一种特殊的线性表,其操作受限于表的一端,通常称为栈顶。在这个端点,线性表元素可以添加(也称为入栈或压栈)和删除(也称为出栈或退栈),并且这种操作具有后进先出(LIFO)的特性。相对的另一端则被称为栈底。

Monstres的博客 1102
上一篇: 【数据结构】静态链表/2021年11月13日
下一篇: 【算法】用递归的方法求斐波那契数列2021-11-15
Sweler*19
博客等级 码龄7年 65粉丝 56原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值