数据结构笔记【全-408统考】【附思维导图】

数据结构精要
本文深入讲解数据结构基础知识,包括逻辑结构、存储结构、算法设计等内容。涵盖了线性表、栈、队列、树、二叉树、图等多种数据结构及其应用,同时探讨了排序、查找等经典算法。

数据结构

思维导图

在这里插入图片描述

绪论

基本概念

  • 数据

    • 信息的载体
  • 数据元素

    • 数据的基本单位
  • 数据项

    • 是构成数据元素的不可分割最小单位。学生记录是一个数据元素,由学号姓名这些数据项共同组成
  • 数据对象

    具有相同性质的数据元素的集合,是数据的子集

  • 数据类型

    • 数据类型是一个值的集合和定义在集合上的一组操作的总称。

    • 原子类型

      • 值不可分的数据类型
    • 结构类型

      • 可分的
    • 抽象结构类型

      • 抽象数据组织及与之相关的操作

数据结构三要素

  • 算法的设计取决于所选的逻辑结构,而算法的实现依赖于所选的存储结构

  • 逻辑结构

    • 数据元素之间的关系,分为线性结构和非线性结构

    • 线性结构

      • 线性表,栈,队列等
    • 非线性结构

      • 树、图、集合等
    • 集合(无关系)、线性结构(一对一)、树形结构(一对多)、图状结构或网状结构(多对多)

  • 存储结构

    • 顺序存储

      • 可以随机存取,只能使用相邻的一整块存储单元,因此可能产生较多的外部碎片。
    • 链式存储、

      • 只能顺序存储。不会出现碎片现象,能充分利用所有存储单元,指针要占用额外空间
    • 索引存储

      • 检索速度快,附加的索引表额外占用存储空间。增加和删除数据时也要修改索引表,会消耗不少时间
    • 散列存储

      • 也叫哈希存儲。根据元素的关键字直接计算出该元素的存储地址,
      • 其优点是检索、增加和删除结点的操作都很快:
      • 缺点是若散列函数不好,则可能出现元素存储单元的冲突,而解决冲突会增加时间和空间开销。
  • 数据的运算

    运算的定义针对逻辑结构,运算的实现针对逻辑结构

复杂度分析

算法概念与特性

  • 有穷性、确定性、可行性 、输入、输出

好的算法满足

  • 正确性、可读性、健壮性、效率与低存储量需求

总结:

  • 逻辑结构:栈,线性表,队列
  • 顺序表,单链表,邻接表,单双链表,循环链表。
    还有一些名词:顺序存储,链式存储,索引存储,散列存储(哈希存储)。

线性表

顺序存储

  • 顺序表

链式存储

  • 单链表、双链表、循环链表、静态链表

总结几个判空

  • 没有头结点的链表判空 head==null
  • 有头结点的链表判空 head->next == null
  • 循环单链表的判空: L->next =L
  • 循环双链表的判空: L-next == L && L->prior==L

栈和队列

操作受限

    • 基本概念

      • 栈的数学性质

        • 出栈元素的不同排列个数为
          (n个数的排列为A!,计算完排列之后别忘了取出不合适的)
      • 基本操作

    • 顺序栈

      • 操作

        • S.top。S.top=-1

          • 进栈

            • 栈未满的情况下:S.data[++S.top]=x;
          • 出栈

            • 栈不空的情况下:x=S.data[S.top–];
          • 判空

            • S.top==-1
          • 栈满

            • S.top==MaxSize-1
          • 栈长

            • S.top+1
        • S.top=0时,即top指向栈顶元素的下一位置。则入栈操作变成S.data[S.top++]=x,出栈为x=S.data[–S.top]

      • 区分top指向的是当前栈顶元素还是下一元素

    • 链栈

    • 共享栈

      • 初始指针

        • top0=-1,top1=Maxsize
      • 栈满

        • top1-top0=1
      • 进栈操作

        • 0号栈先加一再赋值,一号栈先赋值再加一
      • 出栈

        • 相反
      • 特点

        • 更好的利用存储空间,避免上溢
  • 队列

    • 基本概念

      • 队首出(删除),队尾入队(增加)

      • 判空

        • Q.frontQ.rear0
        • 子主题 2
      • 判满

        • 无法判断,继而引出循环队列
    • 循环队列

      • 三种区分队空与队满方法

        • 牺牲一个元素

          • 队满

            • (Q.rear+1)%MaxSize ==Q.front
          • 队空

            • Q.front==Q.rear
          • 元素个数

            • (Q. rear-Q. front+MaxSize)% Maxsize
        • 增设表示元素个数

        • 增设tag数据成员

        • P79页循环队列出入队示意图

    • 链式队列

    • 双端队列

      • 输出受限的双端队列
      • 输入受限的双端队列

推广

  • 数组

    • 一维数组

    • 多维数组

      • 压缩矩阵

        • 对称矩阵

        • 上下三角矩阵

          • 存储元素个数比对称矩阵多一
        • 三对角矩阵

          • 特点

            • |i-j|>1
        • 按行优先和按列优先

      • <
评论 3
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

wvdon

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值