数据结构第2章 栈和队列

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

目录

    • 0、思维导图
    • 栈和队列
    • 1、栈
      • 1)特点
      • 2)分类
      • 3)应用
    • 2、队列
      • 1)特点
      • 2)分类
      • 3)应用

0、思维导图

栈和队列

1、栈

栈是一种遵循后进先出(LIFO,Last In First Out)原则的数据结构。可以想象成一摞盘子,最后放上去的盘子会最先拿掉。
数据结构第2章 栈和队列_第1张图片

1)特点

“后进先出(LIFO)”
数据结构第2章 栈和队列_第2张图片

2)分类

①顺序栈
数据结构第2章 栈和队列_第3张图片

采用顺序存储的栈结构。

  • 1️⃣入栈和出栈
    数据结构第2章 栈和队列_第4张图片

  • 2️⃣判断栈满空

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

    • a.满:top == MAXSIZE - 1

    • b.空:top == -1

②链栈

采用链式存储的栈结构
数据结构第2章 栈和队列_第5张图片

  • a.入栈和出栈

数据结构第2章 栈和队列_第6张图片

  • b.判断栈满空

    说明:top为栈顶指针

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

    • 栈空:top == NULL

③共享栈
共享栈通常是指在程序设计中,多个线程共享同一个栈空间的概念,如下图,两个顺序栈共享内存空间。
数据结构第2章 栈和队列_第7张图片

判断栈空、栈满

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

3)应用

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

②表达式求值
数据结构第2章 栈和队列_第8张图片

  • 前缀表达式

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

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

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

    • 1️⃣中缀转前缀

      • 转换步骤

        • 1、加括号

        • 2、前移运算符

        • 3、去括号

      • 举例数据结构第2章 栈和队列_第9张图片

    • 2️⃣中缀转后缀

      • 转换步骤

        • 1、加括号

        • 2、后移运算符

        • 3、去括号

    • 举例数据结构第2章 栈和队列_第10张图片

③括号匹配

数据结构第2章 栈和队列_第11张图片

④深度优先搜索

2、队列

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

数据结构第2章 栈和队列_第12张图片

1)特点

“ 先进先出(FIFO)”
数据结构第2章 栈和队列_第13张图片

2)分类

①顺序队列

使用顺序存储的队列结构

  • 入队和出队
    数据结构第2章 栈和队列_第14张图片

  • 判断满与空

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

    • 满:rear == MAXSIZE - 1

    • 空:front == rear

②循环队列

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

  • 判断满与空

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

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

    • 空:front == rear。

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

③链式队列

使用链式存储的队列结构
数据结构第2章 栈和队列_第15张图片

  • 判断满与空

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

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

④双端队列
两端都可以进行入队和出队操作的队列
数据结构第2章 栈和队列_第16张图片

  • 输出受限的双端队列

    • 一端可插入和删除,另一端只允许插入
      数据结构第2章 栈和队列_第17张图片
  • 输入受限的双端队列

    • 一端可进行插入和删除,另一端只允许删除
      数据结构第2章 栈和队列_第18张图片

3)应用

①层次遍历

②计算机系统

  • 资源管理

  • 消息缓冲

  • 页面替换算法

③广度优先搜索

上述内容笔记部分图片来源网络,侵删。
参考内容:
1.《王道数据结构》
2.【LeetCode】括号匹配问题
3.数据结构电子讲义
4.数据结构共享栈

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

你可能感兴趣的:(数据结构笔记,数据结构,数据库,服务器,第2章,栈和队列)