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

第一章 数据结构绪论

数据

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

《大话数据结构》读书笔记--持续更新中..._第1张图片
Snip20170718_13.png
结构

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

《大话数据结构》读书笔记--持续更新中..._第2张图片
Snip20170718_14.png
抽象数据结构类型
《大话数据结构》读书笔记--持续更新中..._第3张图片
Snip20170718_12.png

第二章 算法

示例
《大话数据结构》读书笔记--持续更新中..._第4张图片
Snip20170718_15.png
算法效率的度量 -- 时间复杂度

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

常数阶 O(1)
线性阶 O(n)
《大话数据结构》读书笔记--持续更新中..._第5张图片
Snip20170718_16.png
对数阶 O(log n)
《大话数据结构》读书笔记--持续更新中..._第6张图片
Snip20170718_19.png
平方阶 O(n²)
《大话数据结构》读书笔记--持续更新中..._第7张图片
Snip20170718_21.png

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

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

常见时间复杂度
《大话数据结构》读书笔记--持续更新中..._第8张图片
Snip20170718_20.png
算法效率的度量 -- 空间复杂度

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

第三章 线性表

《大话数据结构》读书笔记--持续更新中..._第9张图片
Snip20170718_41.png

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

线性表抽象数据类型:
《大话数据结构》读书笔记--持续更新中..._第10张图片
Snip20170718_27.png
线性表的顺序存储结构

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

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

插入删除性能为O(n)

线性表的链式存储结构

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

《大话数据结构》读书笔记--持续更新中..._第11张图片
Snip20170718_31.png
《大话数据结构》读书笔记--持续更新中..._第12张图片
Snip20170718_30.png
单链表的读取

O(n)

单链表的插入与删除

O(1)

单链表的整表创建

“头插法”


《大话数据结构》读书笔记--持续更新中..._第13张图片
Snip20170718_32.png

“尾插法”

《大话数据结构》读书笔记--持续更新中..._第14张图片
Snip20170718_36.png
单链表的整表删除

静态链表

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

《大话数据结构》读书笔记--持续更新中..._第15张图片
Snip20170718_38.png
循环链表

循环链表

Snip20170718_39.png
双向链表
《大话数据结构》读书笔记--持续更新中..._第16张图片
Snip20170718_40.png

第四章 栈与队列

《大话数据结构》读书笔记--持续更新中..._第17张图片
Snip20170718_48.png

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

栈的抽象数据类型
《大话数据结构》读书笔记--持续更新中..._第18张图片
Snip20170718_42.png
栈的顺序存储结构及实现

栈的结构定义
入栈
出栈

两栈共享空间
《大话数据结构》读书笔记--持续更新中..._第19张图片
Snip20170718_43.png
栈的链式存储结构及实现

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

栈的应用--递归

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

栈的应用--四则运算表达式求值
《大话数据结构》读书笔记--持续更新中..._第20张图片
Snip20170718_46.png

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

Snip20170718_44.png

后缀表达式计算规则:

Snip20170718_45.png
队列

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

队列的抽象数据类型
《大话数据结构》读书笔记--持续更新中..._第21张图片
Snip20170718_47.png
循环队列
队列的链式存储

第五章 串(字符串)

Snip20170718_49.png

主串
子串
空格串
ASCII编码

《大话数据结构》读书笔记--持续更新中..._第22张图片
Snip20170718_50.png
串的比较
串的顺序和链式存储
串的模式匹配 -- 朴素的算法

太低效了

串的模式匹配 -- KMP算法

第六章 树



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

《大话数据结构》读书笔记--持续更新中..._第23张图片
Snip20170719_52.png
树的抽象结构类型
Snip20170719_53.png
树的存储结构

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

《大话数据结构》读书笔记--持续更新中..._第24张图片
Snip20170719_55.png

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

二叉树

二叉树

《大话数据结构》读书笔记--持续更新中..._第25张图片
Snip20170719_56.png
特殊二叉树

斜树
满二叉树

《大话数据结构》读书笔记--持续更新中..._第26张图片
Snip20170719_58.png

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

《大话数据结构》读书笔记--持续更新中..._第27张图片
Snip20170719_59.png

二叉树性质

1-5

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

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

二叉树存储结构--链式存储
Snip20170719_60.png
遍历二叉树--前序
《大话数据结构》读书笔记--持续更新中..._第28张图片
Snip20170719_61.png

算法实现:

《大话数据结构》读书笔记--持续更新中..._第29张图片
Snip20170719_65.png
遍历二叉树--中序
《大话数据结构》读书笔记--持续更新中..._第30张图片
Snip20170719_62.png

算法实现:

《大话数据结构》读书笔记--持续更新中..._第31张图片
Snip20170719_66.png
遍历二叉树--后序
《大话数据结构》读书笔记--持续更新中..._第32张图片
Snip20170719_63.png

算法实现:

《大话数据结构》读书笔记--持续更新中..._第33张图片
Snip20170719_67.png
遍历二叉树--层序遍历
《大话数据结构》读书笔记--持续更新中..._第34张图片
Snip20170719_64.png
推导遍历结果
Snip20170719_68.png

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

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

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

第七章 图

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

无向图

《大话数据结构》读书笔记--持续更新中..._第35张图片
Snip20170725_80.png

完全无向图

《大话数据结构》读书笔记--持续更新中..._第36张图片
Snip20170725_84.png

有向图
有向边 弧头 弧尾

《大话数据结构》读书笔记--持续更新中..._第37张图片
Snip20170725_82.png

完全有向图
简单图

稀疏图
稠密图

《大话数据结构》读书笔记--持续更新中..._第38张图片
Snip20170725_85.png


子图

第八章 查找

第九章 排序

你可能感兴趣的:(《大话数据结构》读书笔记--持续更新中...)