用浅显的话语来讲述栈这种数据结构

360机器学习算法工程师面经 面试官是个很温柔的小哥哥,全程把话语权交给你,全程40min 问:你能先自我介绍一下吗 问:你能给我说说你的项目吗 答:balabala 问:恩,思路比较清晰,那你能给我说一下xgboost吗? 答:xgboost的loss functionz加了L2正则以及限制叶子节点数,用到二阶求导,梯度下降更加准确,balabala。。。 问:你随遍挑个分类算法原理仔细推 阅读详情

一、栈的基本概念

1、栈的定义
       栈是一种只能在一端进行插入或删除操作的线性表。其中允许进行插入或者删除操作的一端叫做栈顶,另一端叫做栈底。栈的插入和删除操作称为入栈和出栈。
2、栈的特点
       从栈的定义可以看出,栈只允许在栈顶进行插入删除操作,这就决定了栈**先进后出(FILO)**的特点。并且,当有n个元素以某种顺序进栈,并且可以任意出栈,其所获得元素排列的数目S满足
3、栈的存储结构
       栈可以根据存储结构分为两种:顺序栈和链式栈。

二、顺序栈和链式栈的操作

1、顺序栈

//结构体的定义
typedef struct{
	int data[maxSize]; //存放栈中元素,maxSize是已定义常量
	int top;  //栈顶指针
}SqStack;顺序栈类型定义

//初始化
void initStack(SqStack &st){
	st.top = -1;//只需要将栈顶指针置于-1,这样第一个元素就是从0下标开始
}

//判断是否为空栈
int isEmpty(SqStack st){
	if(st.top == -1){
		return 1;//空
	}else{
		return 0;
	}
}

//进栈
int push(SqStack &st,int x){
	if(st.top == maxSize -1){//判断是否满栈
		return 0;
	}
	++(st.top);//移动指针,再进栈
	st.data[st.top] = x;
	return 1;
}

//出栈
int pop(Sqstack &st,int &x){
	if(st.top == -1){//栈空则不出栈
		return 0;
	}
	x = st.data[st.top];//取出元素,再移动指针
	--(st.top);
	return 1;
}

2、链式栈
       我感觉和顺序栈差不多,你只要把顺序表和链式表搞清楚,这里就很简单,可以移步我的另一篇讲线性表的废话文

//结构体定义
typedef struct LNode{
	int data; //数据域
	struct LNode *next;//指针域
}LNode;

//初始化
void initStack(LNode *&st){
	lst = (LNode*)malloc(sizeof(LNode));//制造一个头结点
	lst ->next = NULL;
}

//判断栈空只需要判断lst ->next == NULL就可以了

//进栈
void push(LNode *lst, int x){
	LNode *p;
	p = (LNode*)malloc(sizeof(LNode));//制造一个头结点
	p ->next = NULL;
	//链表头插法
	p->data = x;
	p->next=lst->next;
	lst->next = p; 
}

//出栈
int pop(LNode *lst, int &x){
	LNode *p;
	if(lst->next == NULL){//空栈则无法出栈
		return 0;
	}
	//链表的删除
	p = lst->next;
	x = p->data;
	lst ->next = p->next;
	free(p);
	return 1;
}

三、栈的应用

       栈的应用实在是太多了,什么匹配啦,乱七八糟的都可以用栈来解决,感觉出题最多的是符号匹配,至于代码,自己百度吧。

Flutter 核心原理与混合开发模式 原创 airingdeng [腾讯音乐技术团队] 在 「Fan 直播」的 Flutter 混合开发实践中,我们总结了一些 Flutter 混合开发的经验。本文第一篇章将从 Flutter 原理出发,详细介绍 Flutter 的绘制原理,借由此在第二章来对比三种跨端方案;之后再进入第三篇章 Flutter 混合开发模式的讲解,主要是四种不同的 Flutter 混合模式的原理分析;最后的第四篇章,简单... 阅读详情

相关推荐

如何利用ADS中的耦合线设计带通滤波器并转换为HFSS模型

耦合线带通滤波器是一种常用的微带滤波器形式,由多个长度为四分之一波长的耦合线节组成,在所需频点形成谐振,构成滤波器的频率响应特性。首先我们先来了解一下耦合线带通滤波器的电路结构,见下图:包括两对耦合线,中间为公共连接点,其中两对耦合线的偶奇模阻抗为(Z1e,Z1o)和(Z2e,Z2o,端口输入阻抗为Z0)。2.指定一个初始奇偶模值,ADS优化出一个合适的结果,通过奇偶模值利用linecalc工具计算出微带耦合线尺寸。假设中心频率为2GHz,则对应频点的电长度为。5.运行结果,两个软件仿真结果基本一致。

auqihc的博客 2227

栈和队列的详解

栈和队列在数据结构中,运用极其广泛,可以解决很多复杂的问题,无论是先进先出,还是先进后出,都是在生活中容易碰到的情况,所以这些特性可以解决生活中很多常见的事情

gongjunbox的博客 4735

【电子元件篇】MOSFET场效应管作用、选型和测量指南-超简单解读

场效应管是一种电压控制型半导体器件,相比三极管具有输入阻抗高、噪声小、功耗低等优势。主要分为结型和绝缘栅型两大类,后者又可分为耗尽型和增强型MOS管。场效应管通过栅极电压控制漏极电流,具有转移特性和输出特性两大静态特性,以及快速的开关特性。其关键参数包括饱和漏源电流、夹断电压、跨导等,应用场景涵盖信号放大、恒流源、阻抗变换等领域。使用时需根据电路需求选择合适类型,如结型管适合一般放大,功率MOSFET适合高压大电流场合。检测时可用万用表电阻档初步判断好坏和放大能力。

2301_81299416的博客 2540

数据结构 栈

2.3栈2.3.1栈的基本概念及描述栈是一种特殊的线性表,规定它的插入运算,删除运算均在线性表的同一端进行,进行插入和删除的哪一端称为栈顶,另一端称为栈底。栈的插入操作和删除操作分别简称进栈和出栈。先进后出栈的主要操作是插入和删除操作,当然还有栈的初始化,判断栈是否为空以及读取栈顶结点的值等操作。2.3.2顺序栈及其实现方式栈的实现方式主要有两种,一种是顺序栈,一种是链式栈。顺序栈是特殊的顺序表,...

搬砖者也 1558

AS5600磁编码器选型与安装避坑指南:磁铁形状、间隙距离到底怎么选?(附实测数据)

本文详细解析了AS5600磁编码器的选型与安装要点,包括磁铁形状、间隙距离等关键参数的选择,并附有实测数据支持。特别针对Arduino和I2C接口的应用场景,提供了硬件选型和机械安装的实用指南,帮助开发者避免常见陷阱,提升系统精度和稳定性。

weixin_27038245的博客 287

吃透Chisel语言.02.Chisel+VS Code+Ubuntu/WSL2开发环境搭建与使用

既然是学Chisel语言,那肯定得先把环境配置好,磨刀不误砍柴工嘛。而且有个测试环境的话,在后期的学习过程中自己去试运行代码段可以加深学习效果。这里推荐使用Ubuntu或者基于WSL2(Windows Subsystem Linux 2)的Ubuntu,本人使用的是WSL2上的Ubuntu 20.04.3 LTS,在使用体验上与Ubuntu几乎没有区别,且能同时使用Windows提供的诸多便利。...

github-3rr0r的博客 8447

数据结构——线性表及其顺序存储

1.栈(顺序)头文件 #define MAXSIZE 100 typedef int datatype; typedef struct{ datatype a[MAXSIZE]; int top;

qq_53092980的博客 235

基于ESP32-S3与模块化设计的立创桌面充电站:从硬件架构到Web控制实战

本文详细介绍了基于ESP32-S3与模块化设计的立创桌面充电站项目,涵盖从硬件架构到Web控制的全流程实战。项目采用模块化设计,支持自由组合快充模块,并通过ESP32-S3实现智能监控,用户可通过本地网页实时查看各接口电压、电流与功率数据。文章重点解析了基板、连接板与充电模块三大核心部件的设计,特别是大电流PCB的“开窗贴铜”处理技巧,并提供了固件刷写与Web控制面板的配置指南。

weixin_36122351的博客 292

栈的使用场景

大家都知道栈的相关概念与操作,那么栈这种数据结构它试用的场景有哪些呢?本篇博客为同学们大致介绍一下:1.逆序输出栈最大的特点是先进后出,所以逆序输出是栈经常用到的一个应用场景。首先把所有元素依次入栈,然后把所有元素出栈并输出,这样就实现了逆序输出。2.语法检查,符号成对出现在我们日常编程中,括号都是成对出现的,比如“()”“[]”“{}”“<>”这些成对出现的符号那么具体处理的方法就是...

kuangsonghan的博客 1万+

半导体关键系统之RMS浅谈

这种系统还要求设备在设备上的配方发生变化时通知工厂主机,并需要与EAP(Equipment Automation Process)联结,旨在实时管控自动化系统所用配方与用户当初的设定是否匹配,从而使得自动化系统所用的配方更加趋于安全。例如,制药行业中的药品生产管理系统(GMP),它对药品的生产过程进行严格控制,包括原材料的采购、生产工艺流程、质量控制等方面。这些系统通常与企业的生产系统集成,能够对产品的配方进行精细化管理,包括配方的设计、试验、验证、生产等环节。

阿拉伯梳子的专栏 6154

防火墙——双机热备理论讲解

本端和对端协商失败。有可能是因为本端和对端设备的软件版本不一致、某端配置错误、对端设备的心跳接口状态为Down、HRP源或目的端口号被修改、或者底层链路不通等原因导致。会话表、SeverMap表、IP监控表、分片缓存表、GTP表、黑名单、PAT方式端口映射表、NO-PAT方式地址映射表。两台设备一主一备,正常情况下业务流量由主设备处理,当主设备故障时,业务流量平滑切换到备用设备进行处理,业务不中断。开启自动备份后,当主用设备配置了一条可备份的命令或产生了可备份的会话表状态时,会直接备份到备用设备上。

m0_49864110的博客 2万+

机器学习七类核心算法:原理、场景与scikit-learn最小实现

机器学习算法是人工智能领域的基础工具,按输出形式可分为分类、回归与聚类三大任务,再根据数据是否携带标签进一步区分为监督学习与无监督学习。理解这一逻辑,就能将散落的算法名词串联成清晰的算法地图。例如线性回归适合连续数值预测,KMeans用于无标签样本的自动分组,决策树、随机森林、朴素贝叶斯、支持向量机和前馈神经网络则兼顾分类与回归。这些算法各有权衡:树模型不需特征缩放、可解释性强;SVM与神经网络依赖距离或梯度,需配合标准化。掌握其核心公式和最小实现代码后,即可借助scikit-learn快速完成从训练到评估

weixin_34110749的博客 549

OpenClaw Skill 开发全攻略|2026 最新机制 + 文件处理实操,看完直接落地开发

很多新手刚接触时,会把 Skill 想得很复杂,其实大可不必。OpenClaw 中的每个 Skill,本质就是一套“能力描述 + 执行逻辑”的组合包,简单说就是“告诉 AI 你能做什么、怎么做,它就会调用你”,核心特征可以总结为这几点,好记又实用:核心载体:以文件夹为单位,不管多简单的 Skill,文件夹里都必须有 SKILL.md 文件——这是 AI 识别技能的唯一依据,少了它,再完善的代码也没用;

haolove527的专栏 7024

C++开发学习——2nd

每走到一个点,就记录下来,无路可走再回头换方向,正所谓“回溯”,不过记录过的点不要再走了(还是不要吃回头草了,开个小玩笑),直至回到起点。这部分需要明天刷点力扣题看看学习效果,巩固一下(本来打算写下我对这两个算法的浅显理解,发现要打好多字,有点晚了,得不偿失)。所以,算起来,今晚(9.9)算是正式学习的开端。从起点开始,去找到所有的邻接点,记录下来,再从这些邻接点出发依次找到它所有的邻接点,注意是“依次”嗷。下午到现在,大部分时间看数据结构里的“图”,看了会儿电影《狗阵》,还没看完哈哈,待会儿就去看。

weixin_47579312的博客 261

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

IT行业从业者如何在ERP行业发展?

IT行业从业者如何在ERP行业发展? 作为IT人员很难明确自己的定位,更难找到出路。针对这个问题,我将谈谈我自己的看法,希望大家能多补充、讨论。 1.明确自己的定位 在ERP这个行业中,一般来说包括下面这几种职务。由于各公司对顾问的定义和定位有些许的差别,故本文中进行的分类只代表个人观点。 工厂内部的: 1、 ERP实施顾问,负责ERP系统的内部实施工作。 2、 ERP技术支持顾问,负责ERP系统...

weixin_40672823的博客 343

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

校企联合学院分析ERP行业中职位的分类

要想学好ERP,首先要了解ERP这个行业中的几种职务。   一、ERP行业的职务分类:   工厂内部(甲方):   1、 ERP实施顾问,负责ERP系统的内部实施工作;   2、 ERP技术支持顾问,负责ERP系统的二次开发和系统维护工作;   3、 ERP项目经理,负责各部门内部的沟通与协调。   顾问公司(乙方):   1、 ERP售前顾问,配合ERP销售人员对潜在客户进行咨询。

校企联合学院的博客 882

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

工厂IT人员如何自学ERP系统

如何学习ERP 昨天和一个在国营企业工作的朋友闲聊,有了许多的感慨,作为国营体制下工作的IT人员,感觉有些压抑,可又找不到出路。随着年纪日渐增加,越来越觉得要学习些新的东西,问题是出路在哪? 聊天的结果让我明确的感受...

2234

ERP入门

 ERP软件学习方式方法初探      陈镇和 2007/09/30   为什么想起写这个题目哪?其实这个问题很久就想写了,记得2005年时候,公司新招的二位刚毕业的大学生,一个专业是经济管理,一个是会计,东北大区培训后公司让我选择了一位带一带,我选择了一个会计专业的(因为他是男生,不好意思,有点重男轻女,其实不是这样,因为在培训过程中我注意到他比较好学,理解能力接收能力比较强,这样带起来不费劲.

juanna_ding的专栏 1759

海量存储系列之七

在上一个章节,我们阐述了分布式场景下,事务的问题和一些可能的处理方式后,我们来到了下一章节 Key-value存储 这一章,我们将进入k-v场景,其实,在大部分场景下,如果某个产品宣称自己的写读tps超过其他存储n倍,一般来说都是从k-v这个角度入手进行优化的,主要入手的点是树的数据结构优化和锁的细化,一般都能在一些特定的场景获得5-10倍的性能提升。由...

weixin_33958366的博客 76

IT人员如何自学ERP系统 如何学习ERP------(转)

IT人员如何自学ERP系统 如何学习ERP 昨天和一个在国营企业工作的朋友闲聊,有了许多的感慨,作为国营体制下工作的IT人员,感觉有些压抑,可又找不到出路。随着年纪日渐增加,越来越觉得要学习些新的东西,问题是出路在哪? 聊天的结果让我明确的感受到了这样一种现象:作为IT人员很难明确自己的定位,更难找到出路。针对这个问题,我将谈谈我自己的看法,希望大家能多补充、讨论。 一、明确自己的定位在ER...

weixin_30268921的博客 314
上一篇: 让我们一次把线性表搞个清清楚楚明明白白
下一篇: 排序算法大集合:插入类(直接插入、折半插入、希尔)、交换类(冒泡、快排)、选择类。反正你想要的我都要。
Two_Bits
博客等级 码龄8年 25粉丝 23原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值