《数据结构教程》PDF下载

  • 购买积分:12 如何计算积分?
  • 作  者:王少波,孙夫雄编著
  • 出 版 社:北京:清华大学出版社
  • 出版年份:2011
  • ISBN:9787302254072
  • 页数:342 页
图书介绍:本书共分9章,内容涵盖数据结构的基本概念、线性表和串、栈和队列等内容。

第1章 绪论 1

1.1 什么是数据结构 1

1.1.1 数据结构相关事例 2

1.1.2 数据结构的定义 5

1.2 数据结构的相关概念 5

1.2.1 数据和信息 5

1.2.2 数据元素 6

1.2.3 结构类型 6

1.2.4 静态存储空间分配和动态存储空间分配 9

1.3 数据类型、抽象数据类型和数据结构 11

1.3.1 数据类型 11

1.3.2 抽象数据类型 12

1.3.3 数据结构、数据类型和抽象数据类型 13

1.3.4 抽象数据类型的三元组表示 13

1.4 算法及算法分析、算法描述 14

1.4.1 算法和程序 14

1.4.2 程序性能和算法效率 15

1.4.3 算法分析 17

1.4.4 算法描述 20

习题1 23

第2章 线性表和串 27

2.1 线性表的定义 27

2.1.1 线性表的逻辑结构 27

2.1.2 线性表的抽象数据类型 28

2.2 线性表的顺序存储及操作 28

2.2.1 线性表顺序存储 28

2.2.2 线性表顺序存储结构下的操作 30

2.3 简单链表存储结构及操作 34

2.3.1 简单链表的存储 34

2.3.2 简单链表的操作 36

2.4 双向链表 42

2.4.1 双向链表的存储 42

2.4.2 双向链表的操作 43

2.5 单向循环链表和双向循环链表 45

2.5.1 单向循环链表的存储 45

2.5.2 双向循环链表的存储 46

2.6 模拟指针方式构造简单链表 47

2.6.1 模拟链表的存储 47

2.6.2 模拟链表的操作 48

2.7 多重链表 51

2.8 链表应用 53

2.8.1 节点移至表首运算 53

2.8.2 链表的逆向运算 54

2.8.3 多项式的相加运算 55

2.8.4 十字链表结构的应用 59

2.8.5 一个较复杂的机票售票系统的数据结构方案 61

2.9 串 63

2.9.1 串的定义 63

2.9.2 串的逻辑结构及运算 63

2.9.3 串的顺序存储结构 64

2.9.4 串的链式存储结构 64

习题2 65

第3章 栈与队列 68

3.1 堆栈的定义 68

3.1.1 堆栈的逻辑结构 68

3.1.2 堆栈的抽象数据类型 68

3.2 堆栈的顺序存储及操作 69

3.2.1 堆栈顺序存储 69

3.2.2 堆栈顺序存储结构下的操作 70

3.3 堆栈的链式存储及操作 72

3.3.1 堆栈的链式存储 72

3.3.2 链式栈的操作 73

3.4 多个栈共享邻接空间 75

3.5 堆栈的应用 76

3.5.1 检验表达式中括号的匹配 76

3.5.2 表达式的求值 78

3.5.3 背包问题求解 79

3.5.4 地图四染色问题求解 81

3.6 队列的定义 86

3.6.1 队列的逻辑结构 86

3.6.2 队列的抽象数据类型 86

3.7 队列的顺序存储及操作 87

3.7.1 队列顺序存储 87

3.7.2 队列顺序存储结构下的操作 90

3.8 队列的链式存储及操作 92

3.8.1 队列的链式存储 92

3.8.2 链式队列的操作 93

3.9 队列的应用 95

3.9.1 列车重排 95

3.9.2 投资组合问题 98

习题3 101

第4章 树和二叉树 103

4.1 树、森林的概念 103

4.1.1 树的定义 103

4.1.2 树的术语 103

4.2 二叉树的定义及性质 105

4.2.1 二叉树的定义 105

4.2.2 二叉树的性质 107

4.2.3 二叉树的抽象数据类型 109

4.3 二叉树的存储结构 109

4.3.1 二叉树的顺序存储 109

4.3.2 二叉树的链式存储结构 111

4.4 二叉树链式存储结构下的操作 111

4.4.1 二叉树的操作概念 111

4.4.2 二叉树的前序、中序、后序遍历操作 113

4.4.3 二叉树的层次遍历操作 120

4.4.4 二叉树的其他操作 123

4.5 线索树 125

4.5.1 线索树的概念 125

4.5.2 二叉线索树的操作 128

4.6 一般树的表示和遍历 137

4.6.1 一般树的二叉链表示以及它与二叉树的关系 137

4.6.2 二叉树、一般树及森林的关系 139

4.6.3 一般树的遍历概念 139

4.6.4 一般树的运算 140

4.7 树的应用 142

4.7.1 分类二叉树 142

4.7.2 堆树 147

4.7.3 树的路径长度和哈夫曼树 158

习题4 168

第5章 图 172

5.1 图的概念 172

5.1.1 图的定义 172

5.1.2 图的术语 172

5.1.3 图的抽象数据类型 175

5.2 图的存储结构 176

5.2.1 邻接矩阵表示法 176

5.2.2 邻接表表示法 178

5.2.3 十字链表 181

5.2.4 邻接多重表 182

5.3 图的遍历 184

5.3.1 深度优先搜索遍历 184

5.3.2 宽度优先搜索遍历 187

5.3.3 图的连通性 189

5.4 最小生成树 192

5.4.1 生成树 192

5.4.2 最小代价生成树 192

5.5 最短路径 196

5.5.1 单源最短路径 196

5.5.2 任意两个顶点之间的路径 198

5.6 拓扑排序 201

5.6.1 有向无环图 201

5.6.2 AOV网的概念 202

5.6.3 AOV网的算法 204

5.7 关键路径 206

5.7.1 AOE的概念 206

5.7.2 关键路径的概念 207

5.7.3 关键路径的算法 207

习题5 210

第6章 数组、矩阵和广义表 214

6.1 数组的定义 214

6.1.1 数组的逻辑结构 215

6.1.2 数组的抽象数据类型 216

6.2 数组的顺序表示及运算 217

6.2.1 数组的顺序存储结构 217

6.2.2 数组顺序存储结构描述 219

6.2.3 数组顺序存储结构下的操作 221

6.3 矩阵的存储及操作 222

6.3.1 矩阵的定义及操作 222

6.3.2 矩阵的顺序存储 222

6.3.3 特殊矩阵的压缩存储及操作 223

6.3.4 稀疏矩阵的压缩存储及操作 225

习题6 238

第7章 排序 241

7.1 排序的基本概念 241

7.2 待排序数据对象的存储结构 243

7.3 插入排序 244

7.3.1 直接插入排序 244

7.3.2 折半插入算法 245

7.3.3 希尔排序 246

7.4 交换排序 248

7.4.1 冒泡排序 248

7.4.2 快速排序 250

7.5 选择排序 253

7.5.1 直接选择排序 253

7.5.2 堆排序 255

7.5.3 树形选择排序 255

7.6 归并排序 256

7.7 基数排序 259

7.7.1 用二维数组表示桶 260

7.7.2 用链式存储结构实现桶 262

7.8 内部排序方法比较 264

7.9 外排序 265

7.9.1 外部排序 265

7.9.2 多路平衡归并 267

习题7 271

第8章 查找 274

8.1 查找的概念 274

8.2 静态查找技术 275

8.2.1 顺序查找 276

8.2.2 二分查找 277

8.2.3 分块查找 280

8.3 动态查找技术 283

8.3.1 平衡二叉树 283

8.3.2 B-树 294

8.3.3 B+树 301

8.4 哈希表的查找 301

8.4.1 基本概念 301

8.4.2 构造哈希函数的方法 302

8.4.3 哈希冲突的解决方法 304

8.4.4 哈希表的查找 306

8.4.5 哈希算法 307

8.4.6 哈希表的查找分析 309

习题8 310

第9章 文件 313

9.1 外部存储设备 313

9.1.1 磁带 313

9.1.2 磁盘 314

9.1.3 光盘 315

9.1.4 闪存 315

9.2 基本概念 316

9.3 顺序文件 317

9.4 索引文件 318

9.5 索引顺序文件 319

9.6 直接存取文件 320

9.7 倒排文件 321

习题9 322

附录A VC++6.0编译环境介绍 324

附录B 实践内容及要求 338

参考文献 342