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

数据结构学习20250612

栈、队列和链表

  • 栈的定义:只允许在一端进行插入和删除的线性表
  • 栈顶:线性表允许插入和删除的一端
  • 栈底:线性表不允许插入和删除的另一端
  • 空栈:不含任何元素的空表
  • 特点:后进先出(LIFO)

栈操作

  • initstack(&S):初始化一个空栈
  • stackempty(S):判断栈是否为空
  • push(&S, x):进栈
  • pop(&S, &x):出栈
  • gettop(S, &x):读栈顶元素
  • destroystack(&S):栈销毁,并释放S占用的存储空间

栈的顺序存储

顺序栈,利用一组地址连续的存储单元存放自栈底到栈顶的数据元素,同时预设一个指针top指示当前栈顶元素的位置
共享栈(两栈共享空间),利用栈底位置相对不变的特征,可以让两个顺序栈共享一个一维数组空间,将两栈的栈底设置在共享空间的两端,两个栈顶向共享空间中间延伸

栈的链式存储

链栈,便于多个栈共享存储空间,采用单链表实现,规定所有的操作在单链表的表头进行,链表没有头节点,lhead指向栈顶元素

队列

  • 对列是只允许在一端进行插入操作,而在另一端进行删除操作的线性表
  • 特点:先进先出(FIFO)
  • 队头:允许删除的一端
  • 队尾:允许插入的一端
  • 空队列:不包含任何元素的空表

队列操作

  • 初始化队列
  • 判断队列是否为空
  • 入队
  • 出队
  • 读队头元素

队列的顺序存储

顺序队列是分配一块连续的存储单元存放队列中的元素,并设两个指针,队头指针和队尾指针
循环队列是当队尾元素溢出时,从头开始存储,形成一种头尾衔接的顺序存储结构

队列的链式存储

链队列是一个同时带有队头指针和队尾指针的单链表,规则是尾进头出

双端队列

双端队列是两端都可以进行出队和入队操作的队列

链表

  • 定义:链表是一种物理存储上非连续,数据元素的逻辑顺序通过链表中的指针链接次序,实现的一种先行存储结构
  • 特点:链表由一系列节点组成,节点在运行时动态生成,每个节点包含存储数据元素的数据域和存储下一个节点地址的指针域
  • 双向链表:与单向链表的区别是节点中有两个节点指针,分别指向前后两个节点。
  • 链表和数组的对比:
    链表是通过节点把离散的数据链接成一个表,通过对节点的插入和删除操作实现对数据的存取。
    数组是通过开辟一段连续的内存来存储数据,这是两者最大的区别。
    数组有起始地址和结束地址,链表是一个圈,没有头尾之分,但是为了方便节点的插入和删除操作会人为规定一个根节点

相关文章:

  • Transformer模型详解
  • Docker 构建文件代码说明文档
  • Vue 3 前端和 Spring Boot 后端生成 Docker 镜像的标准做法
  • CentOS7下MySQL8.0的安装到基本操作
  • ubuntu网络连接失败 + mobaxterm拖拽文件出错等问题解决方法
  • 42 C 语言随机数生成:rand() 与 srand() 深度解析、生成指定范围随机数、应用实战
  • vue通过路由传参时布尔类型问题
  • 力扣-198.打家劫舍
  • Excel大厂自动化报表实战(互联网金融-数据分析周报制作上)
  • 2.倒排索引
  • 补充讲解perfetto/systrace的CPU Trace信息详解和抓取方法
  • 博图SCL语言教程:灵活加、减计数制作自己的增减计数器(CTUD)
  • VUE - AxiosError-ERR_BAD_REQUEST
  • ZooKeeper详解以及应用部署(AI)
  • 日语学习-日语知识点小记-构建基础-JLPT-N4阶段(34):ようですそうですばかりのに
  • C#学习第30天: 匹配模式
  • 多模态AI爬虫:文本+图像智能抓取实战
  • opencv opencv_contrib vs2020 源码安装
  • 【2025】深度学习环境搭建记录
  • Spring Boot Actuator 健康信息
  • 中医风格网站模板/如何制作网址链接
  • 系部网站建设方案/google海外版
  • 代做ppt网站好/百度seo排名培训优化
  • 深圳定制网站开发/如何进行seo搜索引擎优化
  • 手机网站设计制作公司/站长工具如何使用
  • 网上定做衣服的网站/今日头条新闻消息