第一章 绪论 1
1.1 什么是数据结构 1
1.1.1 什么是数据结构 1
1.1.2 基本概念和术语 3
1.1.3 数据结构的存储方式 3
1.2 算法描述与分析 4
1.2.1 什么是算法 4
1.2.2 算法描述工具 4
1.2.3 算法分析技术初步 5
1.2.4 常用算法实现及分析 6
参考文献 7
第二章 线性表 8
2.1 线性表定义和基本运算 8
2.1.1 线性表定义 8
2.1.2 线性表基本运算 9
2.2 线性表顺序存储结构 11
2.3 线性表链式存储结构 16
2.3.1 单向线性链表 16
2.3.2 循环链表 23
2.3.3 双向链表 25
2.4 线性表顺序和链式存储对比 26
2.5 线性表应用实例 27
参考文献 29
第三章 栈和队列 30
3.1 栈 30
3.1.1 栈的定义 30
3.1.2 栈的基本操作 31
3.1.3 栈的实现 31
3.2 栈的应用 35
3.2.1 数制转换 35
3.2.2 表达式求值 36
3.2.3 符号匹配 38
3.2.4 栈与递归 38
3.3 队列 40
3.3.1 队列的定义 40
3.3.2 队列的基本操作 41
3.3.3 队列的实现 41
3.4 队列的应用 46
3.4.1 打印机缓冲区 46
3.4.2 舞伴问题 46
3.4.3 CPU分时系统 48
参考文献 48
第四章 树 49
4.1 树的定义和基本概念 49
4.1.1 树的定义 49
4.1.2 树的基本概念 49
4.1.3 树与线性结构的对照 51
4.2 二叉树 51
4.2.1 二叉树的定义和基本术语 51
4.2.2 二叉树的性质 51
4.2.3 二叉树的存储结构 53
4.3 遍历二叉树 56
4.3.1 先根遍历 56
4.3.2 中根遍历 56
4.3.3 后根遍历 57
4.3.4 二叉树遍历算法的应用 57
4.4 线索二叉树 59
4.4.1 线索二叉树的基本概念 59
4.4.2 线索二叉树的逻辑表示图 60
4.5 树和森林 61
4.5.1 树的存储结构 61
4.5.2 森林与二叉树的转换 64
4.5.3 树与二叉树的转换 66
4.5.4 树和森林的遍历 67
4.6 哈夫曼树及其应用 68
4.6.1 最优二叉树(哈夫曼树) 68
4.6.2 哈夫曼编码 71
参考文献 75
第五章 图 76
5.1 图的定义和术语 76
5.2 图的存储结构 79
5.2.1 邻接矩阵 79
5.2.2 邻接链表 81
5.2.3 十字链表 85
5.2.4 邻接多重表 86
5.3 图的遍历 86
5.3.1 深度优先搜索算法 87
5.3.2 广度优先搜索算法 89
5.4 图的连通性问题 91
5.4.1 无向图的连通分量与生成树 91
5.4.2 有向图的强连通分量 94
5.5 最小生成树 96
5.5.1 普里姆算法 96
5.5.2 克鲁斯卡尔算法 99
5.6 有向无环图及其应用 101
5.6.1 拓扑排序 102
5.6.2 关键路径 104
5.7 最短路径 107
5.7.1 从某个源点到其他各顶点的最短路径 107
5.7.2 求每一对顶点之间的最短路径 110
参考文献 113
第六章 查找 114
6.1 查找 114
6.1.1 查找表 114
6.1.2 查找 114
6.2 静态查找表 116
6.2.1 顺序表的查找 116
6.2.2 有序表的查找 117
6.2.3 索引顺序表的查找 120
6.3 动态查找表 121
6.3.1 二叉排序树 121
6.3.2 平衡二叉树 129
6.4 散列表 134
6.4.1 散列表思想 134
6.4.2 散列过程 134
6.4.3 散列技术的特点 134
6.4.4 散列技术的冲突问题 134
参考文献 141
第七章 排序 142
7.1 排序术语及记号 142
7.2 三种代价为?(n2)的排序方法 143
7.2.1 插入排序 143
7.2.2 起泡排序 145
7.2.3 选择排序 146
7.2.4 交换排序算法的时间代价 148
7.3 希尔排序 148
7.4 堆排序 150
7.5 归并排序 153
7.6 快速排序 155
7.6.1 选取枢纽元 156
7.6.2 分割策略 157
7.6.3 小数组 159
7.6.4 实际的快速排序程序 159
7.7 大型结构的排序 161
7.8 排序算法的一般下界 162
7.9 外部排序 164
7.9.1 外部排序模型 164
7.9.2 简单算法 164
7.9.3 多路合并 166
7.9.4 多相合并 167
7.9.5 替换选择 168
参考文献 169
第八章 分类算法 171
8.1 朴素贝叶斯算法 171
8.2 ROCCHIO算法 173
8.3 KNN算法 174
8.3.1 距离度量 174
8.3.2 k值的选择 176
8.3.3 Kd树 177
8.4 决策树 178
8.4.1 ID3算法 178
8.4.2 C4.5算法 179
8.4.3 决策树剪枝 180
8.5 支持向量机 181
8.6 神经网络 184
8.7 分类器集成 186
参考文献 187
第九章 聚类算法 188
9.1 聚类 188
9.1.1 聚类简介 188
9.1.2 聚类分析概述 190
9.1.3 聚类分析方法 190
9.1.4 聚类算法比较 192
9.2 相似度计算 193
9.2.1 相似度计算概述 193
9.2.2 连续型属性计算 193
9.2.3 二值离散型属性的相似性计算方法 194
9.2.4 多值离散型属性的相似性计算方法 196
9.3 K-MEANS算法 196
9.3.1 K-means算法简介 196
9.3.2 K-means算法注意问题 197
9.3.3 K-means算法步骤 199
9.3.4 K-means算法示例 200
9.3.5 K-means算法评价 201
9.4 K-MEDOIDS算法 202
9.4.1 K-medoids算法简介 202
9.4.2 K-medoids算法步骤 203
9.4.3 K-medoids算法的四种情况 204
9.4.4 K-medoids算法例题理解 205
9.5 CLARA算法 207
9.5.1 CLARA算法简介 207
9.5.2 CLARA算法步骤 207
9.5.3 CLARA算法样本数据抽取 208
9.5.4 聚类划分 209
9.5.5 代价计算 210
9.6 层次法 212
9.7 密度法 213
9.8 网格法 214
参考文献 215
第十章 高级算法分析 217
10.1 社交网络定义 217
10.1.1 社交网络的起源 217
10.1.2 在线社交网络的概念 217
10.1.3 在线社交网络的特点 218
10.2 传统的情感分析技术 218
10.2.1 意见定义及分类 219
10.2.2 基于语义规则的情感分析技术 220
10.2.3 基于监督学习的情感分析方法 224
10.2.4 基于话题模型的方法 229
10.2.5 情感摘要技术 230
10.2.6 基于迁移学习机制的情感分析技术 232
10.3 面向短文本的情感分析技术 233
10.4 社交网络群体行为 236
10.4.1 群体互动的关系选择 236
10.4.2 群体互动的内容选择 236
10.4.3 群体互动的时间规律 237
10.4.4 用户行为的模型研究 237
10.5 用户偏好模型 239
10.6 数据挖掘中的关联规则算法 240
10.6.1 关联规则的基本理论和概念 240
10.6.2 Apriori算法研究 241
10.6.3 FP-tree算法研究 243
10.7 基于链接分析的网页排序算法 249
10.7.1 搜索引擎排序算法 250
10.7.2 PageRank算法 251
10.7.3 HITS算法 254
10.7.4 比较PageRank算法和HITS算法 258
参考文献 259