首页 > 图书中心 > 数据结构(C语言,慕课版)

目录

目    录 

 

第1章  绪论 1

1.1  数据结构的发展 1

1.2  数据结构的概念 2

1.2.1  数据结构研究的领域 3

1.2.2  数据结构研究的内容 5

1.2.3  数据 5

1.2.4  数据结构 6

1.2.5  数据类型 8

1.3  算法和算法分析 9

1.3.1  算法的概念 10

1.3.2  算法的复杂性分析 10

1.4  习题 13

第2章  线性表 16

2.1  线性表的类型定义 16

2.2  线性表的顺序映像 19

2.2.1  线性表的顺序存储结构 20

2.2.2  顺序存储结构的特点 20

2.2.3  典型操作的算法实现 21

2.2.4  主要操作的算法分析 24

2.3  线性表的链式映像 25

2.3.1  线性链表的定义 25

2.3.2  线性链表的类型定义及典型操作 26

2.3.3  其他形式的链表 30

2.4  线性表实现方法的比较 37

2.4.1  顺序表和链表的比较 37

2.4.2  线性链表定义的改进 38

2.5  一元多项式的表示及相加 40

2.6  习题 44

第3章  栈 49

3.1  栈的定义 49

3.1.1  栈的特点及定义 49

3.1.2  栈的抽象数据类型定义 50

3.2  栈的存储表示及实现 51

3.2.1  栈的顺序存储表示 51

3.2.2  栈的链式存储表示 52

3.3  栈的应用 53

3.3.1  数制转换 53

3.3.2  括号匹配的检验 54

3.3.3  行编辑程序问题 55

3.3.4  迷宫求解问题 56

3.3.5  表达式求值 57

3.3.6  递归的实现 60

3.4  习题 63

第4章  队列 65

4.1  队列的定义 65

4.2  队列类型的实现 66

4.2.1  队列的顺序存储——循环队列 67

4.2.2  队列的链式存储——链队列 69

4.3  队列的应用——离散事件模拟 70

4.4  习题 74

第5章  串 76

5.1  串类型的定义 76

5.1.1  串的基本概念 76

5.1.2  串的抽象数据类型定义 77

5.1.3  串与线性表的区别 79

5.2  串的表示和实现 80

5.2.1  串的定长顺序存储表示 80

5.2.2  串的堆分配存储表示 81

5.2.3  串的块链存储表示 82

5.3  串的模式匹配算法 83

5.3.1  简单匹配算法 83

5.3.2  KMP算法 86

5.4  串应用举例 ——文本编辑 92

5.4.1  文本编辑概述 93

5.4.2  文本编辑程序 94

5.5  习题 94

第6章  数组 95

6.1  数组的基本概念 95

6.2  数组的顺序存储及实现 97

6.2.1  数组的存储方式 97

6.2.2  数组的顺序存储表示和实现 98

6.3  矩阵的压缩存储 100

6.3.1  对称矩阵的压缩存储 100

6.3.2  三角矩阵的压缩存储 101

6.3.3  对角矩阵的压缩存储 102

6.4  稀疏矩阵 103

6.4.1  稀疏矩阵的定义 103

6.4.2  稀疏矩阵的抽象数据类型定义 103

6.4.3  稀疏矩阵的压缩存储 104

6.5  习题 113

第7章  广义表 115

7.1  广义表的定义 115

7.2  广义表的存储结构 117

7.2.1  广义表的头尾链表存储表示 117

7.2.2  广义表的元素存储表示 118

7.3  广义表操作的实现 118

7.3.1  创建广义表 118

7.3.2  求表的深度 120

7.3.3  广义表的结点操作 121

7.3.4  删除广义表 122

7.3.5  求广义表的长度 123

7.3.6  广义表的复制 123

7.4  习题 125

第8章  树 127

8.1  树的类型定义和基本术语 127

8.1.1  树的定义 127

8.1.2  树的常用术语 130

8.1.3  线性结构与树形结构的比较 131

8.2  树和森林的存储结构 131

8.2.1  树的存储结构 131

8.2.2  树和森林的遍历 134

8.3  习题 138

第9章  二叉树 140

9.1  二叉树的定义和性质 140

9.1.1  二叉树的定义 140

9.1.2  两类特殊的二叉树 143

9.1.3  二叉树的重要特性 143

9.2  二叉树的存储结构 144

9.2.1  二叉树的顺序存储表示 144

9.2.2  二叉树的链式存储表示 145

9.3  二叉树的遍历与应用 146

9.3.1  二叉树的三种遍历算法 147

9.3.2  二叉树遍历算法的非递归描述 150

9.3.3  二叉树遍历算法的应用 153

9.4  线索二叉树 158

9.4.1  线索二叉树的定义 158

9.4.2  线索链表的遍历 159

9.4.3  线索链表的建立 161

9.4.4  中序线索二叉树中插入结点 162

9.4.5  线索二叉树的优缺点 163

9.5  树、森林和二叉树 163

9.5.1  森林与二叉树之间的转换 163

9.5.2  森林与二叉树转换的操作 164

9.5.3  树、森林的遍历和二叉树遍历的对应关系 165

9.6  哈夫曼树及其应用 166

9.6.1  哈夫曼树 166

9.6.2  哈夫曼编码 168

9.7  习题 172

第10章  图 176

10.1  图的基本概念 176

10.1.1  图的定义和术语 176

10.1.2  图的抽象数据类型定义 178

10.2  图的存储结构 180

10.2.1  邻接矩阵(数组)表示法 180

10.2.2  邻接表表示法 183

10.2.3  十字链表表示法 186

10.2.4  邻接多重表表示法 187

10.3  图的遍历 189

10.3.1  深度优先搜索遍历 189

10.3.2  广度优先搜索遍历 190

10.4  图的连通性问题 192

10.4.1  无向图的连通分量和生成树 192

10.4.2  有向图的强连通分量 194

10.4.3  最小生成树 195

10.5  有向无环图及其应用 200

10.5.1  拓扑排序 200

10.5.2  关键路径 203

10.6  最短路径 207

10.6.1  单源最短路径 208

10.6.2  每一对顶点间的最短路径 211

10.7  习题 213

第11章  查找 216

11.1  查找表 216

11.2  静态查找表 218

11.2.1  顺序表的查找 218

11.2.2  有序表的查找 220

11.2.3  索引顺序表的查找 222

11.3  动态查找表 224

11.3.1  二叉排序树 224

11.3.2  平衡二叉树 229

11.3.3  B-树 235

11.3.4  B+树 243

11.4  哈希表 244

11.4.1  什么是哈希表 244

11.4.2  哈希函数的构造方法 246

11.4.3  哈希表处理冲突的方法 248

11.4.4  哈希表的查找及分析 251

11.5  习题 255

第12章  内部排序 258

12.1  排序概述 258

12.1.1  排序的概念 258

12.1.2  排序方法的稳定性 259

12.1.3  内部排序和外部排序 259

12.1.4  内部排序的分类 259

12.2  插入排序 260

12.2.1  直接插入排序 260

12.2.2  折半插入排序 262

12.2.3  2-路插入排序 263

12.2.4  表插入排序 265

12.2.5  希尔排序 268

12.3  交换排序 269

12.3.1  起泡排序 270

12.3.2  快速排序 271

12.4  选择排序 273

12.4.1  简单选择排序 273

12.4.2  堆排序 274

12.5  归并排序 277

12.6  基数排序 279

12.6.1  多关键字排序 279

12.6.2  链式基数排序 281

12.7  各种内部排序方法的比较讨论 283

12.8  习题 284

第13章  外部排序 286

13.1  外部排序的方法 286

13.2  归并排序 287

13.2.1  2-路平衡归并排序 287 

13.2.2  多段2-路归并排序 288

13.2.3  多路平衡归并排序 288

13.3  置换选择排序 290

13.3.1  置换选择排序的处理过程 291

13.3.2  置换选择排序算法 291

13.4  习题 294

参考文献 295

版权所有(C)2023 清华大学出版社有限公司 京ICP备10035462号 京公网安备11010802042911号

联系我们 | 网站地图 | 法律声明 | 友情链接 | 盗版举报 | 人才招聘