《数据结构与算法》PDF下载

  • 购买积分:10 如何计算积分?
  • 作  者:邹永林,周蓓,唐晓阳编著
  • 出 版 社:北京:清华大学出版社
  • 出版年份:2015
  • ISBN:9787302393375
  • 页数:239 页
图书介绍:本书采用抽象数据类型描述各种基本数据结构的概念,用C语言表示各种基本操作的算法,由浅入深、循序渐进地介绍了数据结构与算法的基本思想、方法和技术,力图使学生能够在掌握数据结构基础理论的基础上,培养各种算法的设计与分析能力。

第1章 绪论 1

1.1 引言 1

1.1.1 几个实例 1

1.1.2 数据结构的产生和发展 3

1.2 数据结构 4

1.2.1 基本概念和术语 4

1.2.2 数据结构定义 5

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

1.3 算法定义、描述和分析 10

1.3.1 算法定义 10

1.3.2 算法设计技术 11

1.3.3 算法描述 12

1.3.4 算法分析 13

1.4 小结 18

习题1 18

第2章 基本线性结构——线性表 20

2.1 概述 20

2.1.1 线性表的概念 20

2.1.2 线性表的类型定义 22

2.2 顺序表 23

2.2.1 线性表的顺序表示 23

2.2.2 顺序表的实现 23

2.3 链表 28

2.3.1 线性表的链式表示 28

2.3.2 线性链表的实现 28

2.3.3 循环链表的实现 33

2.3.4 双向链表的实现 34

2.3.5 静态链表的实现 35

2.4 算法设计举例 36

2.5 小结 39

习题2 40

第3章 限定性线性结构——栈和队列 41

3.1 栈 41

3.1.1 栈的类型定义 41

3.1.2 顺序栈的表示和实现 42

3.1.3 链栈的表示和实现 45

3.2 队列 47

3.2.1 队列的类型定义 47

3.2.2 顺序队列的表示和实现 48

3.2.3 链队的表示和实现 51

3.3 算法设计举例 53

3.4 小结 59

习题3 59

第4章 特殊线性结构——串 61

4.1 概述 61

4.1.1 串的概念 61

4.1.2 串的逻辑定义 62

4.2 串的表示和实现 63

4.2.1 串的顺序存储表示 63

4.2.2 串的链式存储表示 66

4.3 模式匹配 67

4.3.1 概念 67

4.3.2 模式匹配的基本算法(BF算法) 67

4.3.3 KMP算法 69

4.3.4 Horspool算法和Boyer-Moore算法 72

4.4 算法设计举例 77

4.5 小结 78

习题4 79

第5章 扩展线性结构——数组和广义表 80

5.1 数组 80

5.1.1 数组的定义 80

5.1.2 数组的存储表示 81

5.2 矩阵的压缩存储 83

5.2.1 特殊矩阵 84

5.2.2 稀疏矩阵 85

5.3 广义表 89

5.3.1 广义表的定义 89

5.3.2 广义表的存储结构 91

5.4 算法设计举例 94

5.5 小结 96

习题5 96

第6章 树形结构——树和二叉树 98

6.1 树的定义和术语 98

6.1.1 树的定义 98

6.1.2 树的基本术语 99

6.1.3 树的表示 100

6.1.4 树的遍历 101

6.2 二叉树 101

6.2.1 二叉树的定义 101

6.2.2 二叉树的性质 102

6.2.3 二叉树的存储结构 104

6.2.4 遍历二叉树 106

6.2.5 线索二叉树 109

6.2.6 二叉树算法设计举例 113

6.3 树和森林 115

6.3.1 树的存储结构 116

6.3.2 树、森林与二叉树的转换 118

6.3.3 森林的遍历 120

6.4 哈夫曼树及其应用 121

6.4.1 哈夫曼树 121

6.4.2 哈夫曼编码 122

6.4.3 哈夫曼编码的实现 123

6.5 小结 126

习题6 126

第7章 图形结构——图 128

7.1 图的基本概念 128

7.1.1 图的定义 128

7.1.2 基本术语 130

7.2 图的表示和实现 132

7.2.1 邻接矩阵 132

7.2.2 邻接表 134

7.2.3 十字链表 137

7.2.4 邻接多重表 138

7.3 图的遍历 139

7.3.1 深度优先搜索 139

7.3.2 广度优先搜索 142

7.4 图的典型应用算法设计 144

7.4.1 生成树和最小生成树 145

7.4.2 拓扑排序 150

7.4.3 关键路径 153

7.4.4 最短路径 161

7.5 小结 165

习题7 165

第8章 常用算法Ⅰ——查找 167

8.1 基本概念 167

8.1.1 查找的定义 167

8.1.2 基本术语 168

8.2 线性表的查找 169

8.2.1 顺序查找 169

8.2.2 二分查找 170

8.2.3 分块查找 173

8.3 树表查找 174

8.3.1 二叉排序树 174

8.3.2 平衡二叉树 181

8.3.3 B树 189

8.4 散列查找 197

8.4.1 散列表 197

8.4.2 散列函数的构造方法 199

8.4.3 处理冲突的方法 201

8.4.4 散列表的查找及分析 204

8.5 自组织线性表 207

8.6 小结 209

习题8 210

第9章 常用算法Ⅱ——排序 211

9.1 概述 211

9.2 内部排序 212

9.2.1 直接插入排序和希尔排序 212

9.2.2 冒泡排序和快速排序 215

9.2.3 简单选择排序和堆排序 220

9.2.4 归并排序 223

9.2.5 基数排序 225

9.2.6 其他内部排序方法 229

9.2.7 内部排序效益评估 231

9.3 外部排序 231

9.3.1 外部排序方法 232

9.3.2 自然归并 233

9.3.3 多路平衡归并 234

9.3.4 置换-选择排序 235

9.3.5 最佳归并树 236

9.4 小结 237

习题9 237

参考文献 238