数据结构第2章 栈和队列

名人说:莫听穿林打叶声,何妨吟啸且徐行。------ 苏轼《定风波·莫听穿林打叶声》
本篇笔记整理:Code_流苏(CSDN) (一个喜欢古诗词和编程的Coder😊)

目录

0、思维导图

栈和队列

1、栈

栈是一种遵循后进先出(LIFO,Last In First Out)原则 的数据结构。可以想象成一摞盘子,最后放上去的盘子会最先拿掉。

1)特点

"后进先出(LIFO)"

2)分类

①顺序栈

采用顺序存储的栈结构。

  • 1️⃣入栈和出栈

  • 2️⃣判断栈满空

    说明:栈顶指针top表示当前栈顶元素的位置、MAXSIZE是数组容量大小。

    • a.满:top == MAXSIZE - 1

    • b.空:top == -1

②链栈

采用链式存储 的栈结构

  • a.入栈和出栈
  • b.判断栈满空

    说明:top为栈顶指针

    • 栈满:一般不存在此类情况

    • 栈空:top == NULL

③共享栈

共享栈通常是指在程序设计中,多个线程共享同一个栈空间的概念,如下图,两个顺序栈共享内存空间。

判断栈空、栈满

  • 栈空:top0=-l 时0号栈为空,topl=MaxSize时1号栈空;
  • 栈满:两个栈顶指针相邻(topl-top0=l)。时

3)应用

①函数调用(一般递归较为常见)

②表达式求值

  • 前缀表达式

    • 运算符位于操作数之前
  • 中缀表达式

    • 运算符位于操作数之间
  • 后缀表达式

    • 运算符位于操作数之后
  • 前中后缀转换

    • 1️⃣中缀转前缀

      • 转换步骤

        • 1、加括号

        • 2、前移运算符

        • 3、去括号

      • 举例

    • 2️⃣中缀转后缀

      • 转换步骤

        • 1、加括号

        • 2、后移运算符

        • 3、去括号

    • 举例

③括号匹配

④深度优先搜索

2、队列

队列是一种遵循先进先出(FIFO,First In First Out)原则的数据结构。可以想象成排队买票,最先排队的人最先买到票。

1)特点

" 先进先出(FIFO)"

2)分类

①顺序队列

使用顺序存储的队列结构

  • 入队和出队

  • 判断满与空

    • 队头指针front和队尾指针rear分别指示当前队头元素和队尾元素的位置

    • 满:rear == MAXSIZE - 1

    • 空:front == rear

②循环队列

队列的头尾相接的顺序队列结构

  • 判断满与空

    • 队头指针front和队尾指针rear分别指示当前队头元素和队尾元素的位置。Maxsize指队列的数组大小。

    • 满:(rear + 1) % Maxsize == front,其中%表示取模运算。

    • 空:front == rear。

    • 元素个数:(rear - front + Maxsize) % Maxsize

③链式队列

使用链式存储的队列结构

  • 判断满与空

    说明:头指针front和尾指针rear分别指向当前队头元素和队尾元素。

    • 满:一般不存在此类情况
    • 空:front == NULL且rear == NULL。

④双端队列

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

  • 输出受限的双端队列

    • 一端可插入和删除,另一端只允许插入
  • 输入受限的双端队列

    • 一端可进行插入和删除,另一端只允许删除

3)应用

①层次遍历

②计算机系统

  • 资源管理

  • 消息缓冲

  • 页面替换算法

③广度优先搜索

上述内容笔记部分图片来源网络,侵删。

参考内容:

1.《王道数据结构》

2.【LeetCode】括号匹配问题

3.数据结构电子讲义

4.数据结构共享栈

Code_流苏(CSDN)(一个喜欢古诗词和编程的Coder)
点赞加关注,收藏不迷路!本篇文章对你有帮助的话,还请多多点赞支持!

相关推荐
半夏陌离8 小时前
SQL 进阶指南:视图的创建与使用(视图语法 / 作用 / 权限控制)
java·数据库·mybatis
東雪蓮☆8 小时前
使用 Shell 脚本监控服务器 IOWait 并发送邮件告警
linux·运维·服务器
neo_Ggx238 小时前
MySQL数据库备份攻略:从Docker到本地部署
数据库·mysql·docker
麦兜*8 小时前
MongoDB 性能调优:十大实战经验总结 详细介绍
数据库·spring boot·mongodb·spring cloud·缓存·硬件架构
盒马coding9 小时前
PostgreSQL与Greenplum数据库的编程语言连接
数据库·postgresql
叫我阿柒啊9 小时前
从Java全栈到Vue3实战:一次真实面试中的技术探索
java·数据库·spring boot·微服务·typescript·vue3·restful
我是海飞9 小时前
外置flash提示音打包脚本
运维·服务器·音视频·嵌入式
代码的余温9 小时前
SQL Server全链路安全防护
数据库·安全·sqlserver
武子康9 小时前
Java-118 深入浅出 MySQL ShardingSphere 分片剖析:SQL 支持范围、限制与优化实践
java·大数据·数据库·分布式·sql·mysql·性能优化
北执南念10 小时前
数据库中间件ShardingSphere v5.2.1
数据库·中间件