《数据结构与算法分析 Java版》PDF下载

  • 购买积分:12 如何计算积分?
  • 作  者:(美)Clifford A.Shaffer著;张铭,刘晓丹译
  • 出 版 社:北京:电子工业出版社
  • 出版年份:2001
  • ISBN:7505364979
  • 页数:322 页
图书介绍:

第一部分 预备知识 2

第1章 数据结构和算法 2

1.1 数据结构的原则 2

1.1.1 学习数据结构的必要性 2

1.1.2 代价与效益 3

1.1.3 本书的目的 4

1.2 抽象数据类型和数据结构 4

1.3 问题、算法和程序 6

1.4 算法的效率 8

1.5 深入学习导读 8

1.6 习题 9

2.1 集合 11

第2章 数学预备知识 11

2.2 常用数学术语 12

2.3 对数 13

2.4 递归 14

2.5 级数求和与递归 16

2.6 数学证明方法 17

2.6.1 反证法 18

2.6.2 数学归纳法 18

2.7 评估 20

2.8 深入学习导读 21

2.9 习题 22

第3章 算法分析 25

3.1 概述 25

3.2 最佳、最差和平均情况 28

3.3 换一台更快的计算机,还是换一种更快的算法 29

3.4 渐进分析 31

3.4.1 上限 31

3.4.2 下限 32

3.4.3 Θ表示法 33

3.4.4 化简法则 33

3.5 程序运行时间的计算 34

3.6 问题的分析 37

3.7 多参数问题 38

3.8 空间代价 39

3.9 实际操作中的一些因素 41

3.10 深入学习导读 42

3.11 习题 43

3.12 项目设计 45

第二部分 基本数据结构 48

第4章 线性表、栈和队列 48

4.1 线性表 48

4.1.1 顺序表的表示法 50

4.1.2 链表 53

4.1.3 线性表实现方法的比较 62

4.1.4 元素的表示 63

4.1.5 双链表 63

4.1.6 循环链表 66

4.2 栈 67

4.2.1 顺序栈 67

4.2.2 链式栈 69

4.2.4 递归的实现 70

4.2.3 顺序栈与链式栈的比较 70

4.3.1 顺序队列 73

4.3 队列 73

4.3.2 链式队列 76

4.3.3 顺序队列与链式队列的比较 77

4.4 习题 77

4.5 项目设计 79

第5章 二叉树 80

5.1 定义及主要特性 80

5.1.1 满二叉树定理 82

5.1.2 二叉树的抽象数据类型 83

5.3 二叉树的实现 84

5.3.1 使用指针实现二叉树 84

5.2 周游二叉树 84

5.3.2 空间开销 88

5.3.3 使用数组实现完全二叉树 89

5.4 Huffman编码树 90

5.4.1 建立Huffman编码树 91

5.4.2 Huffman编码及其用法 94

5.5 二叉检索树 96

5.6 堆与优先队列 102

5.7 深入学习导读 107

5.8 习题 108

5.9 项目设计 109

第6章 树 111

6.1 树的定义与术语 111

6.1.2 树的周游 112

6.1.1 树结点的ADT(抽象数据类型) 112

6.2 父指针表示法 113

6.3 树的实现 118

6.3.1 子结点表表示法 118

6.3.2 左子结点/右兄弟结点表示法 119

6.3.3 动态结点表示法 120

6.3.4 动态“左子结点/右兄弟结点”表示法 121

6.4 K叉树 121

6.5 树的顺序表示法 122

6.6 深入学习导读 124

6.7 习题 124

6.8 项目设计 125

7.1 术语和表示法 127

第7章 图 127

7.2 图的实现 129

7.3 图的周游 136

7.3.1 深度优先搜索 137

7.3.2 广度优先搜索 139

7.3.3 拓扑排序 139

7.4 最短路径问题 142

7.4.1 单源最短路径 142

7.4.2 每对顶点间的最短路径 145

7.5 最小支撑树 147

7.5.1 Prim算法 147

7.5.2 Kruskal算法 149

7.6 深入学习导读 151

7.7 习题 152

7.8 项目设计 153

第三部分 排序和检索 156

第8章 内排序 156

8.1 排序的术语及记号 156

8.2 三种代价为Θ(n2)的排序方法 157

8.2.1 插入排序 157

8.2.2 起泡排序 158

8.2.3 选择排序 159

8.2.4 交换排序算法的时间代价 160

8.3 Shell排序 161

8.4 快速排序 163

8.5 归并排序 168

8.6 堆排序 171

8.7 分配排序和基数排序 172

8.8 对各种排序算法的实验比较 177

8.9 排序问题的下限 178

8.10 深入学习导读 181

8.11 习题 181

8.12 项目设计 184

第9章 文件管理和外排序 185

9.1 主存储器和辅助存储器 185

9.2 磁盘和磁带驱动器 187

9.2.1 磁盘访问的代价 190

9.3 缓冲区和缓冲池 192

9.2.2 磁带 192

9.4 程序员的文件视图 194

9.5 外部排序 195

9.6 外部排序的简单方法 197

9.7 置换选择排序 199

9.8 多路归并 201

9.9 深入学习导读 203

9.10 习题 204

9.11 项目设计 205

第10章 检索 207

10.1 检索已排序的数组 207

10.2 自组织线性表 208

10.3 集合的检索 211

10.4 散列方法 212

10.4.1 散列函数 213

10.4.2 开散列方法 215

10.4.3 闭散列方法 216

10.5 深入学习导读 224

10.6 习题 224

10.7 项目设计 226

第11章 索引技术 227

11.1 线性索引 228

11.2 ISAM 230

11.3 树形索引 231

11.4 2-3树 232

11.5 B树 238

11.5.1 B+树 239

11.5.2 B树分析 244

11.6 深入学习导读 245

11.7 习题 245

11.8 项目设计 246

第四部分 应用与高级话题 250

第12章 线性表和数组高级技术 250

12.1 跳跃表 250

12.2 广义表 254

12.3 矩阵的表示方法 256

12.4 存储管理 259

12.4.1 动态存储分配 259

12.4.2 失败处理策略和无用单元收集 266

12.5 深入学习导读 269

12.6 习题 269

12.7 项目设计 271

第13章 高级树形结构 272

13.1 Trie结构 272

13.2 伸展树 275

13.3 空间数据结构 278

13.3.1 k-d树 279

13.3.2 PR四分树 282

13.3.3 其他空间数据结构 284

13.4 深入学习导读 285

13.5 习题 286

13.6 项目设计 286

第14章 分析技术 288

14.1 求和技术 288

14.2.1 估计上下限 290

14.2 递归关系 290

14.2.2 扩展递归 291

14.2.3 分治法递归 292

14.2.4 快速排序平均情况分析 293

14.3 均摊分析 294

14.4 深入学习导读 296

14.5 习题 296

14.6 项目设计 298

第15章 计算的限制 299

15.1 简介 299

15.2 归约 299

15.3 难解问题 302

15.3.1 NP完全性 303

15.4 不可解问题 306

15.3.2 绕过NP完全性问题 306

15.4.1 不可数性 307

15.4.2 停机问题的不可解性 309

15.4.3 确定程序行为是不可解的 310

15.5 深入学习导读 311

15.6 习题 311

15.7 项目设计 312

附录A C和Pascal程序员的Java导引 313

A.1 例1:线性表的接口 313

A.2 例2:基于数组的线性表实现 314

A.3 例3:链表的实现 316

参考文献 319