美文网首页
《大话数据结构》读书笔记--持续更新中...

《大话数据结构》读书笔记--持续更新中...

作者: imChay | 来源:发表于2017-07-18 11:22 被阅读34次

    第一章 数据结构绪论

    数据

    数据:人类、动物、植物...
    数据对象:人类
    数据元素:一个人
    数据项:眼、耳、鼻...(数据不可分割的最小单位)

    Snip20170718_13.png
    结构

    逻辑结构:集合结构、线性结构、树形结构、图形结构
    物理结构:顺序存储结构、链式存储结构

    Snip20170718_14.png
    抽象数据结构类型
    Snip20170718_12.png

    第二章 算法

    示例
    Snip20170718_15.png
    算法效率的度量 -- 时间复杂度

    时间复杂度:T(n) = O(f(n))
    T(n):执行次数
    n:问题规模
    f(n):
    测定运行时间最可靠的方法就是计算对运行时间有消耗的基本操作的执行次数。运行时间和这个成正比。

    常数阶 O(1)
    线性阶 O(n)
    Snip20170718_16.png
    对数阶 O(log n)
    Snip20170718_19.png
    平方阶 O(n²)
    Snip20170718_21.png

    心得:以是否存在循环和循环嵌套情况来判断时间复杂度

    平均时间复杂度和最坏时间复杂度

    常见时间复杂度
    Snip20170718_20.png
    算法效率的度量 -- 空间复杂度

    空间复杂度:S(n) = O(f(n))

    第三章 线性表

    Snip20170718_41.png

    线性表:零个或多个数据元素的有限序列

    线性表抽象数据类型:
    Snip20170718_27.png
    线性表的顺序存储结构

    存取性能为O(1),这种称为随机存储结构

    顺序存储结构的插入与删除

    插入删除性能为O(n)

    线性表的链式存储结构

    结点:数据域+指针域
    指针域
    数据域
    单链表
    头指针
    头结点:空的数据域+头指针(非必要)

    Snip20170718_31.png Snip20170718_30.png
    单链表的读取

    O(n)

    单链表的插入与删除

    O(1)

    单链表的整表创建

    “头插法”


    Snip20170718_32.png

    “尾插法”

    Snip20170718_36.png
    单链表的整表删除

    静态链表

    静态链表:数组描述的链表

    Snip20170718_38.png
    循环链表

    循环链表

    Snip20170718_39.png
    双向链表
    Snip20170718_40.png

    第四章 栈与队列

    Snip20170718_48.png

    :仅在表尾进行插入和删除操作的线性表
    进栈:压栈、入栈
    出栈:弹栈

    栈的抽象数据类型
    Snip20170718_42.png
    栈的顺序存储结构及实现

    栈的结构定义
    入栈
    出栈

    两栈共享空间
    Snip20170718_43.png
    栈的链式存储结构及实现

    把栈顶放在单链表的头部,不需要头结点
    进栈
    出栈

    栈的应用--递归

    斐波拉切数列:前面两项相邻之和构成后一项 (1 2 3 5 8 ...)
    递归 :自己调用自己

    栈的应用--四则运算表达式求值
    Snip20170718_46.png

    中缀表达式转后缀表达式规则:

    Snip20170718_44.png

    后缀表达式计算规则:

    Snip20170718_45.png
    队列

    队列:只允许在一端进行插入操作,另一端进行删除操作的线性表

    队列的抽象数据类型
    Snip20170718_47.png
    循环队列
    队列的链式存储

    第五章 串(字符串)

    Snip20170718_49.png

    主串
    子串
    空格串
    ASCII编码

    Snip20170718_50.png
    串的比较
    串的顺序和链式存储
    串的模式匹配 -- 朴素的算法

    太低效了

    串的模式匹配 -- KMP算法

    第六章 树



    空树
    子树
    结点的度:结点拥有的子树数
    叶结点、终端结点:度为0
    分支结点、非终端结点:度不为0 (分支结点=根节点+内部结点)
    结点的层次
    树的深度、树的高度
    有序树、无序树
    森林

    Snip20170719_52.png
    树的抽象结构类型
    Snip20170719_53.png
    树的存储结构

    双亲表示法:记录父节点
    孩子表示法:记录所有的孩子;改进版双亲孩子表示法

    Snip20170719_55.png

    孩子兄弟表示法:记录第一个孩子和右兄弟

    二叉树

    二叉树

    Snip20170719_56.png
    特殊二叉树

    斜树
    满二叉树

    Snip20170719_58.png

    完全二叉树:与满二叉树位置编号相同,只不过不满

    Snip20170719_59.png
    二叉树性质

    1-5

    二叉树存储结构--顺序存储

    顺序存储一般只用于完全二叉树

    二叉树存储结构--链式存储
    Snip20170719_60.png
    遍历二叉树--前序
    Snip20170719_61.png

    算法实现:

    Snip20170719_65.png
    遍历二叉树--中序
    Snip20170719_62.png

    算法实现:

    Snip20170719_66.png
    遍历二叉树--后序
    Snip20170719_63.png

    算法实现:

    Snip20170719_67.png
    遍历二叉树--层序遍历
    Snip20170719_64.png
    推导遍历结果
    Snip20170719_68.png

    前序:从根节点开始,先遍历左子树,再遍历右子树
    中序:从“左下角"开始, 中 --> 右
    后序:从“左下角"开始,右 --> 中

    线索二叉树
    树、森林与二叉树转换
    赫夫曼树及其应用

    赫夫曼编码:最基本的压缩编码方法

    第七章 图

    :顶点的有穷非空集合和顶点之间边的集合组成,通常表示为:G(V,E),其中G表示为一个图,V表示顶点集合,G表示边的集合
    顶点:和线性表、树不同,图中不可以没有顶点

    无向图

    Snip20170725_80.png

    完全无向图

    Snip20170725_84.png

    有向图
    有向边 弧头 弧尾

    Snip20170725_82.png
    完全有向图
    简单图

    稀疏图
    稠密图

    Snip20170725_85.png


    子图

    第八章 查找

    第九章 排序

    相关文章

      网友评论

          本文标题:《大话数据结构》读书笔记--持续更新中...

          本文链接:https://www.haomeiwen.com/subject/nqjqkxtx.html