《数据结构及应用算法教程》PDF下载

  • 购买积分:12 如何计算积分?
  • 作  者:严蔚敏,陈文博编著
  • 出 版 社:北京:清华大学出版社
  • 出版年份:2001
  • ISBN:7302040125
  • 页数:309 页
图书介绍:本书从数据类型的角度,分别讨论了4大类型的数据结构的逻辑特性、存储表示及其应用。为了便于读者理解,书中对数据结构众多知识点的来龙去脉都做了详细的解释和说明,并配有大量的算法实例穿插其间;书的最后还专门辟出一章,用来讲解数据结构在解决实际问题中的应用示例,便于举一反三。本书的第1章综述数据、数据结构和抽象数据类型等基本概念和算法;第2章、第4至7章从数据类型的角度,分别讨论线性表、栈和队列、串和数组、二叉树和树以及图和广义表等数据结构的逻辑特性、存储表示及其应用;第3章和第8章分别讨论排序和查找表的各种实现方法,其中除介绍各种实现方法外,并着重对算法的时间效率做了定性的分析,对算法的应用场合及适用范围进行了比较和介绍;第9章讨论常用的文件结构;第10章以8个数据结构的综合应用为例,阐述以抽象数据类型为中心的程序设计方法,这一章的内容相当于“数据结构学习指导”,本意是为学生提供一个“综合利用数据结构知识编制小型软件”的规范示例。书的每一章都配有适量的习题,供读者复习提高之用。教授学时可为40至60,另外应留有一定的时间供学生完成适量的上机作业。本书在编排方面注意了数据结构本身的内在联系和从

第1章 绪论 1

1.1 数据结构讨论的范畴 1

1.2 与数据结构相关的概念 2

1.2.1 基本概念和术语 3

1.2.2 数据结构(data structures) 4

1.2.3 数据类型和抽象数据类型 5

1.3 算法及其描述和分析 6

1.3.1 算法 6

1.3.2 算法的描述 6

1.3.3 算法效率的衡量方法和准则 9

1.3.4 算法的存储空间需求 10

习题 11

第2章 线性表 13

2.1 线性表的类型定义 13

2.1.1 线性表的定义 13

2.1.2 线性表的基本操作 14

2.2 线性表的顺序表示和实现 17

2.2.1 顺序表--线性表的顺序存储表示 17

2.2.2 顺序表中基本操作的实现 18

2.2.3 顺序表其他算法举例 23

2.3.1 单链表和指针 26

2.3 线性表的链式表示和实现 26

2.3.2 单链表的基本操作 28

2.3.3 单链表的其他操作举例 31

2.3.4 循环链表 33

2.3.5 双向链表 34

2.4 有序表 37

2.5 顺序表和链表的综合比较 41

习题 42

3.1 排序的基本概念 44

第3章 排序 44

3.2 简单排序方法 47

3.2.1 插入排序 47

3.2.2 起泡排序 49

3.3 先进排序方法 51

3.3.1 快速排序 51

3.3.2 归并排序 53

3.3.3 堆排序 55

3.4 基数排序 56

3.5 各种排序方法的综合比较 59

习题 62

第4章 栈和队列 64

4.1 栈 64

4.1.1 栈的结构特点和操作 64

4.1.2 栈的表示和操作的实现 65

4.2 栈的应用举例 68

4.3 队列 76

4.3.1 队列的结构特点和操作 76

4.3.2 队列的表示和操作的实现 77

4.4 队列应用举例 82

习题 87

第5章 串和数组 89

5.1 串的定义和操作 89

5.2 串的表示和实现 92

5.2.1 定长顺序存储表示 92

5.2.2 堆分配存储表示 93

5.2.3 块链存储表示 94

5.3 正文模式匹配 95

5.4 正文编辑--串操作应用举例 97

5.5.1 数组的定义和操作 99

5.5 数组 99

5.5.2 数组的顺序表示和实现 100

5.5.3 数组的应用 101

5.6 矩阵的压缩存储 104

5.6.1 特殊形状矩阵的存储表示 104

5.6.2 随机稀疏矩阵的存储压缩 106

习题 112

6.1.1 二叉树的定义和基本术语 114

6.1.2 二叉树的几个基本性质 114

6.1 二叉树 114

第6章 二叉树和树 114

6.1.3 二叉树的存储结构 118

6.2 二叉树遍历 120

6.2.1 问题的提出 120

6.2.2 遍历算法描述 122

6.2.3 二叉树遍历应用举例 123

6.2.4 线索二叉树 127

6.3 树和森林 129

6.3.1 树和森林的定义 129

6.3.2 树和森林的存储结构 131

6.3.3 树和森林的遍历 134

6.4.1 堆排序的实现 138

6.4 树的应用 138

6.4.2 二叉排序树 141

6.4.3 赫夫曼树及其应用 143

习题 149

第7章 图和广义表 152

7.1 图的定义和术语 152

7.2 图的存储结构 155

7.2.2 图的邻接表存储表示 156

7.2.1 图的数组(邻接矩阵)存储表示 156

7.3 图的遍历 158

7.3.1 深度优先搜索遍历图 159

7.3.2 广度优先搜索遍历图 161

7.4 连通网的最小生成树 166

7.5 单源最短路径 168

7.6 拓扑排序 171

7.7 关键路径 174

7.8.1 广义表的定义 176

7.8 广义表 176

7.8.2 广义表的存储结构 177

7.8.3 广义表的遍历 178

习题 178

第8章 查找表 181

8.1 静态查找表 182

8.1.1 顺序查找 183

8.1.2 折半查找 184

8.1.3 分块查找 187

8.2 动态查找表 188

8.2.1 二叉查找树 189

8.2.2 键树 193

8.3 哈希表及其查找 198

8.3.1 什么是哈希表 198

8.3.2 构造哈希函数的几种方法 200

8.3.3 处理冲突的方法和建表示例 201

8.3.4 哈希表的查找及其性能分析 202

8.3.5 哈希表的应用举例 205

习题 207

9.1 基本概念 209

9.1.1 外存储器简介 209

第9章 文件 209

9.1.2 有关文件的基本概念 210

9.2 顺序文件 211

9.2.1 存储在顺序存储器上的文件 211

9.2.2 存储在直接存储器上的文件 213

9.3 索引文件 213

9.3.1 B树 213

9.3.2 B+树和索引顺序文件 215

9.4.1 文件组织方式 217

9.4 哈希文件 217

9.4.2 文件的操作 218

9.5 多关键码文件 218

9.5.1 倒排文件 219

9.5.2 索引链接文件 220

习题 221

第10章 数据结构程序设计示例 222

10.1 抽象数据类型 222

10.2 从问题到程序的求解过程 225

10.2.1 建立数据结构模型设计抽象数据类型 226

10.2.2 算法设计 227

10.2.3 实现抽象数据类型 228

10.2.4 编制程序代码并进行静态测试和动态调试 229

10.3 程序的规范说明 230

10.4 应用示例分析 231

10.4.1 含并、交和差运算的集合类型 233

10.4.2 最佳任务分配方案求解 242

10.4.3 排队问题的系统仿真 250

10.4.4 十进制四则运算计算器 259

10.4.5 自行车零部件库的库存模型 265

10.4.6 教务课程计划的辅助制定 273

10.4.7 一个小型全文检索模型 280

10.4.8 汽车牌照的快速查找 289

实习题 297

实习一 链表的维护与文件形式的保存 297

实习二 用回溯法求解“稳定婚配”问题 298

实习三 以队列实现的仿真技术预测理发馆的经营状况 298

实习四 利用树型结构的搜索算法模拟因特网域名的查询 299

实习五 管道铺设施工的最佳方案选择 300

实习六 使用哈希表技术差别两个源程序的相似性 301

附录 算法一览表 302

参考文献 309