【数据结构之栈、队列、数组】

发布于:2023-01-13 ⋅ 阅读:(530) ⋅ 点赞:(0)

数据结构之栈队列数组


声明:此为个人笔记,代码一部分来自王道408课程,仅供个人学习使用,如有侵权请联系;如有转载使用,一切后果自行负责与本人无关

3.1栈

  • 3.1栈

    定义:只允许在一端进行插入或删除操作的线性表

    结构:栈顶(top):线性表允许插入删除的那一端

    栈底(bottom):固定的,不允许插入删除的那一端

    基本操作:初始化initStack、判空stackEmpty、出栈Pop、读栈顶getPop、销毁栈destoryStack

    顺序栈:采用顺序存储的栈为顺序栈,存放自栈底到栈顶的数据元素,附设一个指针(top)指示当前栈的位置。

    栈顶指针:S.top

    栈顶元素:S.data[S.top]

    栈空条件:S.top==-1 栈满条件;S.top==Maxsize-1 栈长:S.top+1

    基本操作:初始化initStack、判空stackEmpty、出栈Pop、读栈顶getPop、销毁栈destoryStack

3.2队列

  • 3.2队列

    1、基本概念

    定义:只允许在一端插入另一端删除的线性表,先进先出

    队头:允许删除的一端;队尾:允许插入的一端;空队列:不含任何元素的空表

    插入元素叫入队;删除元素叫离队

    队头指针front,队尾指针rear

    基本操作:初始化initQueue、判空QueueEmpty、enQueue入队、deQueue离队、getHead(Q,&x)读队头元素

    2、顺序存储队列

    顺序队列:采用顺序存储的队列为顺序队列,存放数据元素,附设两个指针,

    队头指针front指向队头元素,队尾指针rear指向队尾元素。

    初始条件:Q.frontQ.rear0

    进队操作:队不满时,送至队尾元素,rear指针加一

    出队操作:队不空时,先取出队头元素,front指针加一

    在这里插入图片描述

    循环队列:特殊的顺序存储队列,把元素从逻辑上视为一个环

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

3、链式存储队列

链队列:同时带头指针和尾指针的单链表。

可分为带头结点和不带头结点

当Q.frontnull,Q.rearnull时,链队列为空

4、双端队列

双端队列:只允许从双端插入和删除的线性表

在这里插入图片描述

例子:

在这里插入图片描述

输入受限的

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-KzImrY2e-1660792075107)(https://secure2.wostatic.cn/static/n1QjZ1NNrzVKdgbqzmRozT/image.png)]

输出受限

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-9wc8E8s9-1660792075107)(https://secure2.wostatic.cn/static/rM2YnEDhKzs4CddtoUEgCf/image.png)]

3.3栈和队列的应用

  • 3.3栈和队列的应用

    1、括号匹配

    最后出现的左括号最先匹配(先进先出)
    在这里插入图片描述
    在这里插入图片描述

    实现算法;

    在这里插入图片描述

    2、表达式求值

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

3、递归

计算正整数的阶乘n!;求斐波那契数列

函数调度栈可称为递归工作栈,每进一层,将递归调用信息压入栈顶,每出一层递归,从栈顶弹出信息,缺点是太多层递归会导致栈溢出。

4、队列的应用

OS中解决多用户引起的资源竞争问题;解决外部设备和主机速度不匹配问题;实现图的广度有限遍历;树的层次遍历

3.4矩阵

  • 3.4矩阵(不是重点)

    对称矩阵

    三角矩阵

    三对角矩阵

    稀疏矩阵
    在这里插入图片描述

在这里插入图片描述

6.25、6.26、6.28

本文含有隐藏内容,请 开通VIP 后查看

网站公告

今日签到

点亮在社区的每一天
去签到