前言
这篇文章是对《大话数据结构》的一个总结。这本书当时看的时候,感觉十分的震撼,国内难得有一本说人话的书。但是因为数据结构和算法本身内容就很枯燥,因此,部分内容表现出来仍然像天书一样。因此,本文竟可能对里面的“人话”提取出来。
1、思维导图
2、总论
结构分类
- 逻辑结构:集合、线性(一对一)、树(一对多)、图(多对多)
- 物理结构:顺序存储结构、链式储存结构
抽象数据类型 (Abstract Data Type,ADT)
抽象数据类型是指一个数学模型及定义在该模型上的一组操作。
这里说的数据模型指的是线性表、栈、队列等,操作指的是使用基本操作算法来组成复杂操作算法。
3、算法
(1)算法特性:输入输出、确定性、又穷性、可行性
(2)算法要求:正确性、健壮性、可读性、时间效率高和存储量低
(3)算法时间复杂度
推导大O阶方法:
1.用常数1取代运行时间中所有加法常数
2.在修改后的运行函数中,只保留最高位
3.如果最高阶项存在且不是1,则去除与这个项相乘的常数
得到的结果是大O阶
4、线性表
定义
零个或多个数据元素的有限序列
线性表的存储结构
1、顺序存储
2-1、单链表
两个属性:数据,指针
2-2、静态链表 (用游标代替指针)
两个属性:数据,游标(游标值就是下一个数据在数组中的下标)
2-3、循环链表(将单链表的头指针去掉,终端结点的指针域由空指针指向头结点)
两个属性:数据,指针
2-4、双向链表
三个属性:数据,前驱指针、后继指针
5、特殊线性表:栈与队列
定义
栈的存储结构
1、栈的顺序存储
2、栈的链式存储
队列的存储结构
1、队列的顺序存储
2、队列的链式存储
6、字符串
定义
字符串的存储结构
1、字符串的顺序存储
1、字符串的链式存储
7、树
定义
树的存储结构
1、树的双亲表示法
2、树的孩子表示法
3、树的双亲孩子表示法
4、树的孩子兄弟表示法
8、二叉树
定义
特殊二叉树
1、斜树
2、满二叉树
3、完全二叉树
4、线索二叉树
5、赫夫曼数二叉树
二叉树的存储结构
1、二叉树的顺序存储
2、二叉链表
遍历二叉树
1、前序遍历
2、中序遍历
3、后序遍历
4、层序遍历
9、图
定义
图的存储结构
1、邻接矩阵
2、邻接表
3、十字链表
4、邻接多重表
5、边集数组
遍历二叉树
1、深度优先
2、广度优先
10、参考文献
《大话数据结构》