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

第一章 数据结构绪论

数据

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

《《大话数据结构》读书笔记--持续更新中...》 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


子图

第八章 查找

第九章 排序

    原文作者:imChay
    原文地址: https://www.jianshu.com/p/c742a981d595
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞