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

基础数据结构——栈和队列

该篇内容来自作者观看b站青岛大学王卓老师的数据结构与算法基础课的个人笔记https://space.bilibili.com/40323036?spm_id_from=333.788.b_765f7570696e666f.2

栈和队列

特点:

栈:

具有“先进后出”,”后进先出的特性

队列:

具有“先进先出” “后进后出”的特性

只能限定在表的“端点”进行操作的线性表

栈的定义和特点:

栈 是 仅在表尾进行插入和删除的线性表

表尾称作栈顶;表头称作栈尾

插入到栈顶,称为入栈 压入 Push

从栈顶删除最后一个元素,称为出栈 弹出 Pop

栈和一般线性表的不同

仅在于运算规则不同

队列的定义和特点:

队列 是 在一端插入,在另一端删除的线性表,具有”先进先出“的特点

插入的操作称为”入队”,删除的操作称为“出队”

队列的相关概念

栈的表示和实现:

栈是一种线性表,所以有顺序存储和链式存储,即顺序栈链栈

顺序栈的表示和实现:

创建栈:

top指针表示栈顶的上一位

base指针表示栈底

stacksize表示栈可使用的最大容量

顺序栈的建立:

判断是否为空栈:

看top==base

栈满:

看top-base==stacsize

当栈已经满了,仍插入元素,导致溢出,称为上溢

当栈已经空了,仍删除元素,导致溢出,称为下溢

初始化栈:

入栈和出栈:

入栈:

1.将元素存入栈顶

2.栈顶指针后移一位

出栈:

1.栈顶指针前移一位

2.取出栈顶元素

栈的其他操作:

链栈的表示和实现:

创建:

这里指针的方向与一般的链表方向相反,后入栈的元素指向先入栈的元素,方便操作

入栈和出栈:

入栈:

1.生成新结点

2.将新结点数据域置e

3.新结点插入栈顶

4.修改栈顶指针

出栈:

1.将栈顶数据置e

2.临时保存栈顶结点

3.修改栈顶指针

4.释放临时指针,即原栈顶

取栈顶元素:

队列的表示和实现:

顺序队的表示和实现:

初始化:

队头队尾指针指向0

队空和队满的判断方法:

队空:出队时队头指针不断后移,最终两指针会相遇

q.front=q.rear;

队满:

因为队满和队空,一般情况下队尾指针都会和队头指针相遇,所以需要用别的表示方式表示队满情况。

1.另外设计一个变量,表示队列元素个数

2.少用一个元素空间

(rear+1)%MAXQSIZE==front;

预留一个空间,这时候如果执行入队操作,先进行(rear+1)%MAXQSIZE==front;

就能够得到队满的情况,如果执行出队操作,front指针后移,取模不为0,队不满

入队:

在执行过程,如果队列已经满了,队头的元素出队后,后面无法继续入队,而此时的队列却不为满,这将造成内存浪费,称为“假溢出”

假溢出解决办法:循环队列

利用模运算,当队尾指针+1对队列长度取模为0时,即队尾指针指向最大长度,赋值为0即可让尾指针回到队头

出队:

循环取模,队头到最大长度下标可以自动归0

取队头元素:

在初始化时,base指向new出来的数组空间的首地址,可以当成数组用

注:数组名,本质就是一个不能改变的指针;指针,本质就是一个能改变的数组名。

销毁队列:

链队的表示和实现:

指针变化情况

创建:

front指针为头结点

初始化:

入队和出队:

销毁链队:

取头结点元素:

http://www.jsqmd.com/news/707808/

相关文章:

  • 04 | 笔试算法题:凑最长不重复字符串的数目问题
  • 告别台架依赖:SkyEyeCANoe实现汽车CAN通信软件在环验证
  • G-Helper风扇控制终极指南:如何为你的ROG笔记本定制完美散热方案
  • 中山定制楼梯品牌怎么选?技术维度拆解靠谱标准 - 资讯焦点
  • .NET SqlSugar 仓储、工作单元、服务层
  • MCP 2026多租户隔离配置失效的5种静默形态,如何用1条kubectl命令+3行Prometheus告警规则实时捕获?
  • 想给照片换背景?这几款工具 + 1个微信小程序的搭配建议
  • 你的公司Wi-Fi总被蹭?可能是缺了这台“看门人”:手把手搭建AD域控实现802.1x认证
  • WPS 通配符神技:一键上标参考文献 + 中英文自动加空格
  • 2026年如何高效降低AI率?6款最新低成本降AI率工具实测(附独家指令) - 降AI实验室
  • 佛山定制楼梯品牌选型指南:技术维度拆解与实测参考 - 资讯焦点
  • 告别依赖冲突!手把手教你从源码编译libfranka 0.10.0与franka_ros(附特定版本切换指南)
  • KoGPT大模型推理加速:FasterTransformer优化实践
  • 换季总感冒发烧怎么回事?乳贝初接骨木莓配方,筑免疫防线 - 资讯焦点
  • TileKernels从入门到精通
  • 成都青少儿英语培训怎么选才契合孩子需求? - 品牌推荐官方
  • Oracle数据库物化视图概述
  • 中山定制楼梯品牌怎么选?从技术维度拆解核心标准 - 资讯焦点
  • 选择旅游团商家时应从哪些方面考量、如何挑选? - 品牌推荐官方
  • 别再手动调PID了!用STM32 MotorControl Workbench 5.4.4快速搞定FOC电机调试
  • GHelper:轻量级华硕笔记本控制工具完整使用指南
  • CST优化器避坑指南:为什么你的参数优化总不收敛?可能是这5个设置没搞对
  • 白酒品牌究竟该找谁来做?原来背后有这些门道! - 品牌推荐官方
  • GEO 实战教程:从 0 到 1 构建企业 GEO 体系
  • 给新生儿选纸尿裤别踩坑,2026年10大主流品牌盘点 - 资讯焦点
  • 桌面/在线/小程序三种抠图路线,2026 年选哪种更方便
  • STM32---项目学习日记
  • 2026年高效降AI工具必备收藏清单 - 降AI实验室
  • 茶韵悦龄——基于AI与适老化设计的益智康养平台
  • AI Agent开发指南:从Awesome清单到实战应用