什么是栈,栈存储结构详情

大模型学习路线之多模态模型 ​ (Frankly speaking,博主太懒了)章节一只对CLIP、BLIP、BLIP2、InstructBLIP进行了整理,章节二以CLIP、VisualGLM作为实践案例。​ 实际上多模态模型除了CLIP、BLIP、BLIP2、InstructBLIP,还有LLaVA、miniGPT4,以及国内清华的VisualGLM、阿里的Qwen-VL等。(更多多模态原理可以看文末的参考说明)一、多模态模型 & 理论。 阅读详情

什么是栈,栈存储结构详情

同顺序表和链表一样,栈也是用来存储逻辑关系为一对一数据的线性存储结构,如图所示:
在这里插入图片描述
从图1我们看到,栈存储结构与之前学的线性存储有所差异,这源于栈对数存和取的过程有特殊的要求:

  1. 栈只能从表的一端存取数据,另一端是封闭的
  2. 在栈中,无论是存储数据还是取数据,都必须遵循先进先出的原则,即最先进栈的元素最后出栈。从图1栈来说,从图中数据的存储状态可判断出,元素1是最先进的栈。因此,当需要从栈中取出元素1的时候,根据先进后出原则,需提前将元素3和元素2从栈中取出,然后才能成功取出元素1.

因此我们可以给栈下一个定义,即 栈是一种只能从表的一端取数据且遵循先进先出原则的线性存储结构。

通常,栈的开口端被称为栈顶;相应的,封口段被称为栈低。
在这里插入图片描述

进栈和出栈

基于栈结构的特点,在实际应用中,通常只会对栈执行一下两种操作:

  • 向栈中添加元素,此过程被称为进栈(入栈或压栈)
  • 从栈中提取指定元素,此过程被称为出栈(或弹栈)

栈的具体实现

栈是一种特殊的线性存储结构,因此栈的具体实现有以下两种方式:

  1. 顺序栈: 采用顺序存储结构可以模拟栈存储数据的特点,从而实现栈存储结构
  2. 链栈: 采用链表存储结构实现栈结构

两种实现方式的区别,仅限于数据元素在实际物理空间上存放的相对位置,顺序栈底层采用的是数组,链栈底层采用的是链表。

栈的应用

基于栈结构对数据存取采用 “先进后出” 原则的特点,它可以用于实现很多功能。

例如,我们经常使用浏览器在各种网站上查找信息。假设先浏览的页面 A,然后关闭了页面 A 跳转到页面 B,随后又关闭页面 B 跳转到了页面 C。而此时,我们如果想重新回到页面 A,有两个选择:
重新搜索找到页面 A;
使用浏览器的"回退"功能。浏览器会先回退到页面 B,而后再回退到页面 A。

浏览器 “回退” 功能的实现,底层使用的就是栈存储结构。当你关闭页面 A 时,浏览器会将页面 A 入栈;同样,当你关闭页面 B 时,浏览器也会将 B入栈。因此,当你执行回退操作时,才会首先看到的是页面 B,然后是页面 A,这是栈中数据依次出栈的效果。

不仅如此,栈存储结构还可以帮我们检测代码中的括号匹配问题。多数编程语言都会用到括号(小括号、中括号和大括号),括号的错误使用(通常是丢右括号)会导致程序编译错误,而很多开发工具中都有检测代码是否有编辑错误的功能,其中就包含检测代码中的括号匹配问题,此功能的底层实现使用的就是栈结构。

同时,栈结构还可以实现数值的进制转换功能。例如,编写程序实现从十进制数自动转换成二进制数,就可以使用栈存储结构来实现。

以上也仅是栈应用领域的冰山一角。

葵花 Himawari 8/9号数据学习记录-01-数据初识 葵花卫星学习记录,第一章:卫星的来源与卫星数据的波段介绍 阅读详情

相关推荐

DNN加速器脉动阵列轻量级瞬时故障检测

本文系统综述了面向深度神经网络(DNN)脉动阵列加速器的轻量级瞬时故障检测技术。通过分析比较算法级校验(ABFT)、数值异常监测(剪裁、中值滤波等)、硬件编码检错(AN码、剩余码)以及选择性冗余等方案,指出这些方法能以5%-10%的开销实现对权重和激活比特翻转的高效检测,远低于传统ECC/冗余计算的成本。研究显示,结合多种轻量技术可构建多层防护体系,在保障推理可靠性的同时保持加速器的高性能特性。该成果为安全关键领域的DNN加速器设计提供了重要参考。

欢迎交流! 1074

数据结构【栈】有哪些应用场景?

本章会介绍栈的特性以及栈的初始化、销毁、插入、删除、取栈顶元素等…栈作为一种数据结构,是一种只能在一端进行插入和删除操作的特殊线性表。它按照后进先出(Last in Firstout)的原则存储数据,先进入的数据被压入栈底,最后的数据在栈顶,需要读数据的时候从栈顶开始弹出数据(最后一个数据被第一个读出来)栈具有记忆作用,对栈的插入与删除操作中,不需要改变栈底指针。

YISHENG1s的博客 2156

FI 应计对象的创建和摊销

创建/修改:ACACTREE01/ACACTREE02 应计对象的过账:ACACPOSTING

nancyln9711的博客 903

数据结构——第三章 栈和队列

数据结构作业

weixin_54197094的博客 2007

把 ST03 的历史数据留得更久:ABAP Workload 统计保留期设置、原理与落地避坑指南

SAP ST03性能数据保留期配置指南 ST03/ST03N是SAP系统性能分析的核心工具,但默认数据保留期通常较短(3个月左右),难以满足跨季度对比、年度规划等需求。本文详细解析了ST03数据保留期的配置方法及注意事项: 数据存储机制:性能数据存储在监控库中,通过定期重组作业清理过期数据 配置路径:7.0+系统在"Workload Collector Database→Reorganization→Control"中按Profile分别设置 关键限制:保留期最大值建议不超过99,否则可

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

C# NX二次开发-查找连续倒圆角面

可以通过ufun函数 UF_MODL_ask_face_type 和 UF_MODL_ask_face_props 可判断处理选择相应的一组圆角面。在QQ群里有人问怎么通过一个选择一个倒圆角面来自动选中一组倒圆角面。这个是初步思路,如果有更好的思路可回复讨论一下。

fhqiwmc的博客 618

栈知识介绍、存储方式介绍及栈的应用

一图展示栈的学习框架!栈的顺序存储结构如何实现?栈的链式结构如何实现?栈的应用场景有哪些?

theskylife的博客 1677

v86.01 鸿蒙内核源码分析 (静态分配篇) | 很简单的一位小朋友 | 百篇博客分析 OpenHarmony 源码

相比动态分配,静态内存池的分配就是个小弟弟,非常的简单,两个结构体 + 一张图 就能说明白。

日拱一卒,力出一孔 775

栈的基础知识

0. 简介 最近在自己编写一些小的算法的时候,深感自己的算法过于臃肿。碰巧Datawhale在新的一期组队学习中组织了数据结构与算法的课程学习。于是就参加了,再次感谢Datawhale~~ 首先跟大家分享一下两个自己感觉比较好的学习资料,一个是 算法通关手册 ,也是Datawhale在本次组队学习中的学习资料;一个是B站上的视频 【北京大学】数据结构与算法Python版(完整版),老师讲的特别棒(也难得有Python版的数据结构课程,哈哈~)。 1. 栈的简介 栈是数据结构中常见的一种数据存储方式。栈的全

hello_JeremyWang的博客 2739

吊打原版YOLOv8!ASF-YOLO多尺度融合+注意力机制实战解析(遥感/医疗/质检均适用)

ASF-YOLO融合YOLOv8的创新目标检测框架摘要 ASF-YOLO是针对小目标检测优化的先进框架,采用三重特征编码器和尺度序列融合技术增强多尺度特征提取能力。核心创新包括: 三重特征编码器(TPE)融合跨层级信息 尺度序列特征融合(SSFF)模块通过3D卷积处理多尺度信息 通道-位置注意力机制(CPAM)聚焦关键特征区域 Zoom_cat模块实现自适应多尺度特征融合 该框架特别适用于医学影像、遥感检测等小目标密集场景,通过动态特征权重调整显著提升检测精度。关键技术实现包含多尺度特征统一、3D卷积序列处

FJN110的博客 527

华为OD技术面八股_C++_05

汇总华为OD技术面C++方向技术面八股文,提供详细解答。

qq_45776114的博客 413

数据结构之栈的基本操作

栈的基础操作

m0_72035301的博客 1141

YOLOv8改进 | 主干网络 | 将主干网络替换为轻量化的ShuffleNetv2【原理 + 完整代码】

yolov8,yolov8创新,yolov8改进

kay_545 2565

栈的链式存储结构

{//定义链表节点数据//定义指针域,单链表的后继指针域}LiStack;优点 :不存在栈满上溢的情况, 单链表可以一直插入。

qq_57484399的博客 3221

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

栈、栈的存储结构

栈 栈(stack )又称堆栈,它是运算受限的线性表。 其限制是仅允许在表的一端进行插入和删除操作,不允许在其他任何位置进行插入、查找、删除等操作。 表中进行插入、删除操作的一端称为 栈顶(top) ,栈顶保存的元素称为 栈顶元素。 相对的,表的另一端称为栈底(bottom) 当栈中没有数据元素时称为空栈; 向一个栈插入元素又称为 进栈或 入栈; 从一个栈中删除元素又称为 出栈或 退栈。 由于栈的插入和删除操作仅在栈顶进行,后进栈的元素必定先出栈, 所以又把堆栈称为 后进先出表 (Last In First

weixin_43942304的博客 1598

温度PID控制PLC程序

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

【数据结构】栈的链式存储结构

采用链表存储的栈称为链栈,这里采用带头结点的单链表实现链栈的优点是不存在栈满上溢的情况入栈出栈操作在单链表的表头(入栈也叫头插)在栈顶插入数据元素,新插入的数据元素成为新的栈底

2301_80031203的博客 1724

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

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

什么是栈,栈存储结构详解。

同顺序表和链表一样,栈也是用来存储逻辑关系为 “一对一” 数据的线性存储结构。 栈存储结构与之前所学的线性存储结构有所差异,这缘于栈对数据 “存” 和 “取” 的过程有特殊的要求: 栈只能从表的一端存取数据,另一端是封闭的。 在栈中,无论是存数据还是取数据,都必须遵循"先进后出"的原则,即最先进栈的元素最后出栈。拿栈来说,从图中数据的存储状态可判断出,元素 1 是最先进的栈。因此,当需要从栈中取出元素 1 时,根据"先进后出"的原则,需提前将元素 3 和元素 2 从栈中取出,然后才能成功取出元素 1。

YESIMOLA01的博客 2237

栈的链式存储结构及实现

今天学习栈的链式存储结构。 链式存储结构最大的好处就是没有空间的限制,通过指针指向将结点像一个链子一样把结点链接,那么栈的同样可以用于链式存储结构。 栈的链式存储结构,简称为链栈。想想看,栈只是栈顶来做插入和删除操作,栈顶放在链表的头部还是尾部呢?由于单链表有头指针,而栈顶指针也是必须的,那么干嘛不让他们合二为一呢,所以比较好的办法是把栈顶放到单链表的头部。另外栈顶在头部了,那么单链表的头结点...

重庆李四 1万+

栈的链式存储结构(链栈)

栈的链式存储结构(链栈) 1.链栈的存储结构 typedef struct StackNode{ ElemType data; //结点的数据元素 struct StackNode *next; //结点的指针域 }StackNode,*LinkStack; //StackNode* (指针类型)为指向栈中某结点的指针,用该指针代表此结点 //LinkStack (指针类型)为指向栈中头结点的指针(即为头指针) 2.链栈的初始化 初始化就是构造一个空栈,直接将栈顶指针置空 Status InitSt

一个搬运知识的笨小孩 4796

栈和队列存储结构总结

认识: 栈和队列是线性表的子集 (是插入和删除位置受限的线性表) 一.栈: 1.什么是栈? 栈是一种只能在一端插入或删除操作的线性表 2.栈的特点? 后进先出 3.栈的存储结构 3.1顺序栈 假设栈的元素个数最大不超过正整数MaxSize 元素都具有同一数据类型,ElemType typedef struct { ElemType data[MaxSize]; //存放栈的元素 int top; //栈顶指针 }SqStack;

muyu_muyu的博客 3254

【数据结构】栈:从概念到两种存储结构的实现

避免了链表删除数据结点的时候,需要找到该结点的前一个结点;没有扩容所带来的空间的浪费与性能的消耗。栈的压栈操作,即为顺序表的尾插。栈的弹栈操作,即为顺序表的尾删。栈的压栈操作,即为链表的头插。栈的弹栈操作,即为链表的头删。缓存利用率不如顺序表高。

FSRMWK的博客 1138

链式存储结构-栈

目录 链式存储结构-栈 链式存储结构-栈 #include <stdlib.h> #include <stdio.h> typedef int data_t; //类型 typedef struct node{ data_t data...

测试 544

栈的定义,两种基本的存储结构:顺序存储结构和链式存储结构

栈的定义 栈(stack )又称堆栈,它是运算受限的线性表。 其限制是仅允许在表的一端进行插入和删除操作,不允许在其他任何位置进行插入、查找、删除等操作。 表中进行插入、删除操作的一端称为 栈顶(top) ,栈顶保存的元素称为 栈顶元素。 相对的,表的另一端称为栈底(bottom)  当栈中没有数据元素时称为空栈; 向一个栈插入元素又称为 进栈或 入栈; 从一个栈中删除元素又称为 出栈或 退栈...

wyqwilliam的博客 1万+

栈的两种存储结构

栈的两种存储结构 栈的特点: 在固定一端进行插入删除,在栈顶进行 链式存储结构定义(不带头结点): class StackNode { public: int data; StackNode *next; StackNode():next(NULL){} }; class StackLine { public: StackNode...

weixin_30415113的博客 1768

数据结构——栈和队列(栈的顺序存储结构和链式存储结构)

栈是一种重要的线性结构,可以这样讲,栈是前面讲过的线性表的一种具体形式。就像我们刚才的例子,栈这种后进先出的数据结构应用是非常广泛的。在生活中,例如我们的浏览器,每次点击一次“后退”都是退回到最近的一次浏览网页。例如我们Word,Photoshop等的“撤销”功能也是如此。再例如我们C语言的函数,也是利用栈的基本原理实现的。官方定义栈(stack)是一个后进先出(Last in first out,LIFO)的线性表,它要求只在表尾进行删除和插入操作。

weixin_74209413的博客 2094
上一篇: python 相交链表
下一篇: python 环形链表
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一叶知秋的BLOG

创作不易 请多多关注

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值