当前位置: 首页 > article >正文

【数据结构】【线性表】栈的基本概念(附c语言源码)

栈的基本概念

讲基本概念还是回到数据结构的三要素:逻辑结构,物理结构和数据运算。

  • 从逻辑结构来讲,栈的各个数据元素之间是通过是一对一的线性连接,因此栈也是属于线性表的一种
  • 从物理结构来说,栈可以是顺序存储和顺序表一样,也可以是链式存储和链表一样,但栈的主要特点不是存储的位置关系,而是操作限制:栈的插入或删除都只可以在其一端进行。
  • 从数据运算来讲,栈的插入和删除都只能在一端进行,因此其基本操作没有删除和插入一说,而是讲进栈和出栈;除了这两个基本操作外,栈还包括初始化栈,销毁栈,读栈顶元素等操作。
    栈的基本术语
    我们可以将栈视为一个长形的桶,把数据元素看成一个个小球,然后一个个将球放进桶里的过程。
  • 栈底元素:最先放进去的小球在桶的最下面,我们叫它栈底元素;
  • 栈顶元素:最后放进去的小球在桶的最上面,我们叫它栈顶元素;
  • 栈顶:所以我们把能插入和删除的那一端称为栈顶,栈顶是可变的
  • 栈底:不能插入和删除的呢一段称为栈底,栈底是固定的
  • 空栈:栈里面没有一个元素称为空栈
    在这里插入图片描述
    数据元素进栈顺序:1->2->3
    数据元素出栈顺序:3->2->1

    栈的特点是先进后出(LIFO)
    栈的基本操作
  • 创建栈:构建一个空栈S,分配内存空间
  • 销毁栈:释放栈内元素及其内存空间
  • 进栈:在栈未满时,将元素x从栈顶压入栈称为新栈顶
  • 出栈:在栈不是空栈时,弹出栈顶元素,下一个元素称为新栈顶元素
  • 查栈顶元素
  • 判别栈是否为空栈
    栈操作的常见错误
  • 栈下溢(underflow) top=0 即为空栈 empty 时执行出栈
  • 栈上溢(overflow) top>n n为栈的长度

http://www.kler.cn/a/404159.html

相关文章:

  • Docker 容器的初始化设置
  • 《操作系统》实验内容 实验二 编程实现进程(线程)同步和互斥(Python 与 PyQt5 实现)
  • fastify 连接 mysql
  • 【架构】主流企业架构Zachman、ToGAF、FEA、DoDAF介绍
  • Android智能座舱,视频播放场景,通过多指滑屏退回桌面,闪屏问题的另一种解法
  • web——upload-labs——第九关——特殊字符::$DATA绕过
  • Android Studio不显示需要的tag日志解决办法《All logs entries are hidden by the filter》
  • Stable diffusion详细讲解
  • JDBC 调用带输入和输出参数的存储过程
  • 【 模型】 开源图像模型Stable Diffusion入门手册
  • 实时数仓:Lambda架构和Kappa架构有什么联系和区别
  • 点餐管理系统设计与实现(Java+SpringBoot+MySql)
  • quick 2 — qml 与c++的混合编程
  • 熟悉的 Docker,陌生的 Podman
  • undefined 和 null 区别?
  • Linux 系统下的硬件视频加速
  • MyBatis实践:提高持久化层数据处理效率
  • 1、HCIP之RSTP协议与STP相关安全配置
  • Android App获取自己的公网IP地址
  • Elasticsearch面试内容整理-实践与应用场景
  • ComfyUI绘画|Stable Diffusion原理的简易讲解
  • 2024年亚太地区数学建模C题完整思路
  • “闲置经济”成新消费趋势,万物新生长期成长性如何?
  • 早期超大规模语言模型的尝试——BLOOM模型论文解读,附使用MindSpore和MindNLP的模型和实验复现
  • B树的简单实现
  • DAY4 网络编程(广播和多线程并发)