目录
第1章绪论1
1.1数据结构及其相关概念1
1.1.1数据结构讨论范围1
1.1.2定义和术语5
1.1.3抽象数据类型12
1.2算法及其分析15
1.2.1算法和数据结构关系15
1.2.2算法定义16
1.2.3算法描述18
1.2.4算法分析21
1.3程序设计基础27
1.3.1程序和数据结构关系27
1.3.2静态存储和动态存储28
1.3.3结构体类型28
1.3.4输入/输出29
1.3.5引用类型参数29
1.3.6流程控制(分支、循环等)30
1.3.7递归31
1.3.8软件构造31
1.4数据结构的历史与发展32
1.5人工智能的历史与发展34
1.6智能算法应用36
本章小结38
习题38
与前沿技术链接39
科学家精神39
第2章线性表43
2.1线性表的逻辑结构43
2.1.1线性表的定义43
2.1.2线性表的逻辑特征44
2.2线性表的抽象数据类型44
2.3线性表的顺序存储实现45
2.3.1顺序表46
2.3.2顺序表基本运算的实现46
2.3.3顺序表的基础应用49
2.3.4顺序表的智能应用50
2.4线性表的链式存储实现52
2.4.1线性链表53
2.4.2静态链表58
2.4.3循环链表59
2.4.4双向链表60
2.4.5链表的智能应用61
2.5实际中存储结构的选择63
本章小结63
习题63
与前沿技术链接65
科学家精神65
第3章栈与队列67
3.1栈的定义67
3.1.1栈的定义和术语67
3.1.2栈的抽象数据类型68
3.2栈的存储与实现69
3.2.1栈的顺序存储与实现69
3.2.2栈的链式存储与实现70
3.2.3多栈共享的存储与实现70
3.3栈的应用71
3.3.1栈与递归过程71
3.3.2迷宫问题74
3.3.3表达式求值76
3.3.4栈在智能算法中的应用78
3.4队列的定义79
3.4.1队列的定义和术语79
3.4.2队列的抽象数据类型79
3.5队列的存储与实现79
3.5.1队列的链式存储与实现79
3.5.2队列的顺序存储与实现81
3.6队列的应用82
3.6.1约瑟夫出圈问题83
3.6.2舞伴问题83
3.6.3队列在智能算法中的应用84
本章小结85
习题85
与前沿技术链接87
科学家精神87
第4章串90
4.1串的定义90
4.1.1串的定义和术语90
4.1.2串的抽象数据类型91
4.2串的存储与实现92
4.2.1串的顺序存储与实现92
4.2.2串的堆分配存储与实现93
4.2.3串的链式存储与实现94
4.3模式匹配95
4.3.1朴素模式匹配算法95
4.3.2KMP算法——改进的模式匹配算法97
4.4串的智能算法应用102
本章小结103
习题103
与前沿技术链接104
科学家精神106
第5章数组与广义表108
5.1数组的定义108
5.1.1数组的定义和术语108
5.1.2数组的抽象数据类型109
5.2数组的存储与实现109
5.2.1数组的顺序存储109
5.2.2数组的压缩存储111
5.2.3数组的链式存储115
5.3数组的智能算法应用117
5.4广义表的定义118
5.4.1广义表的定义和术语118
5.4.2广义表的抽象数据类型119
5.5广义表的存储与实现120
5.5.1表头表尾分析法120
5.5.2子表分析法120
5.5.3广义表的操作121
5.6广义表的智能算法应用122
本章小结123
习题123
与前沿技术链接124
科学家精神124
第6章树126
6.1树的相关概念126
6.1.1树的定义和术语126
6.1.2树的抽象数据类型127
6.1.3树的应用和表示方法128
6.2二叉树130
6.2.1二叉树的有关概念130
6.2.2二叉树的存储与实现133
6.2.3二叉树的遍历134
6.3线索二叉树141
6.3.1线索二叉树的表示141
6.3.2二叉树的线索化142
6.3.3线索二叉树的遍历144
6.4树和森林145
6.4.1树的存储结构145
6.4.2树、森林与二叉树的转换148
6.4.3树和森林的遍历150
6.5树的应用152
6.5.1哈夫曼树152
6.5.2判定树160
6.5.3集合的树形结构表示162
6.6树的知识点结构164
6.7树的智能算法应用165
6.7.1决策树165
6.7.2梯度提升树(GBDT)特征工程166
6.7.3树形递归神经网络(Tree Recursive Neural Network)167
6.7.4深度神经网络压缩169
本章小结170
习题170
与前沿技术链接175
科学家精神175
第7章图177
7.1图的相关概念177
7.1.1图的定义和术语177
7.1.2图的抽象数据类型178
7.2图的存储结构179
7.2.1图的顺序存储179
7.2.2图的链式存储181
7.2.3有向图的十字链表存储183
7.2.4无向图的邻接多重表存储184
7.3图的遍历185
7.3.1深度优先遍历185
7.3.2广度优先遍历187
7.4图与树的联系190
7.4.1生成树190
7.4.2无向图与开放树191
7.4.3最小生成树191
7.5无向图的双连通性196
7.5.1无向图的双连通分量196
7.5.2求关节点算法196
7.6有向图的遍历和强连通性198
7.6.1有向图的遍历198
7.6.2强连通性199
7.7有向无环图的应用200
7.7.1拓扑排序200
7.7.2关键路径202
7.8最短路径205
7.8.1单源最短路径205
7.8.2每对顶点间的最短路径207
7.9图的智能算法应用209
7.9.1图与复杂网络209
7.9.2图与社区发现(GirvanNewman算法)210
7.9.3图与推荐系统(协同过滤算法)211
7.9.4盖板瑕疵检测212
7.10图的知识点结构214
本章小结215
习题215
与前沿技术链接221
科学家精神222
第8章查找225
8.1查找的相关概念225
8.1.1查找表的定义和术语225
8.1.2查找表的抽象数据类型225
8.1.3查找的分类226
8.2静态查找226
8.2.1顺序表的查找线性查找226
8.2.2有序表的查找折半查找228
8.2.3索引顺序表的查找分块查找229
8.3动态查找表230
8.3.1二叉排序树230
8.3.2平衡二叉树234
8.3.3B-树和B+树238
8.4哈希表243
8.4.1哈希表的有关概念243
8.4.2哈希函数的构造方法244
8.4.3处理冲突的方法247
8.4.4哈希表的查找和分析248
8.5查找的知识点结构及扩展252
8.5.1跳表252
8.5.2红黑树253
8.6查找的智能算法应用254
8.6.1最近邻查找算法254
8.6.2哈希查找算法255
8.6.3LSH算法256
本章小结257
习题257
与前沿技术链接258
科学家精神259
第9章内部排序262
9.1排序的相关概念262
9.1.1排序的定义和术语262
9.1.2内部排序263
9.2插入排序264
9.2.1直接插入排序264
9.2.2折半插入排序265
9.2.3表插入排序267
9.2.4希尔排序270
9.3冒泡排序和快速排序272
9.3.1冒泡排序272
9.3.2快速排序273
9.4选择排序276
9.4.1简单选择排序276
9.4.2树形选择排序277
9.4.3堆排序278
9.4.4归并排序280
9.4.5基数排序282
9.5排序算法的比较284
9.6排序的智能算法应用285
9.6.1检索模型285
9.6.2推荐系统287
本章小结288
习题289
与前沿技术链接290
科学家精神291
第10章文件与外部排序293
10.1文件及文件操作293
10.1.1文件的相关概念293
10.1.2文件操作294
10.1.3查询方式295
10.1.4文件分类295
10.2文件组织296
10.2.1顺序方式296
10.2.2索引方式298
10.2.3散列方式299
10.2.4链接方式文件和多重链表文件301
10.2.5ISAM文件302
10.2.6VSAM文件304
10.2.7UNIX文件306
10.3磁盘文件的归并分类307
10.4磁带文件的归并分类311
10.5外部排序的智能算法应用312
10.5.1分布式随机梯度下降313
10.5.2联邦学习314
本章小结315
习题315
与前沿技术链接316
科学家精神317