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

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

栈的基本概念

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

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

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

相关文章:

  • 修改ffmpeg实现https-flv内容加密
  • react中useMemo的使用场景
  • Pytorch自定义算子反向传播
  • aws服务(二)机密数据存储
  • VMware Workstation 17.6.1
  • 高校企业数据挖掘平台推荐
  • Vue项目开发 formatData 函数有哪些常用的场景?
  • 【AI知识】两类最主流AI应用(文生图、ChatGPT)中的目标函数
  • 【单片机基础】定时器/计数器的工作原理
  • ModuleNotFoundError: No module named ‘distutils.msvccompiler‘ 报错的解决
  • HCIA笔记2--ARP+ICMP+VRP基础
  • SpringBoot与MongoDB深度整合及应用案例
  • Redis模拟延时队列 实现日程提醒
  • vue项目中富文本编辑器的实现
  • nginx 配置lua执行shell脚本
  • Keil+VSCode优化开发体验
  • vue2中引入cesium全步骤
  • 工程师 - 智能家居方案介绍
  • 中小企业人事管理:SpringBoot框架高级应用
  • 嵌入式Linux驱动开发日记
  • 迪杰特斯拉算法(Dijkstra‘s)
  • reids基础
  • 私有化部署视频平台EasyCVR宇视设备视频平台如何构建视频联网平台及升级视频转码业务?
  • SparkContext讲解
  • MODBUS TCP转CANOpen网关
  • 渗透测试---shell(4)脚本与用户交互以及if条件判断
  • 02_Spring_IoC实现
  • 使用Python3实现Gitee码云自动化发布
  • Ubuntu24.04下的docker问题
  • PAT (Basic Level) Practice (中文)1002 写出这个数