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

  • 购买积分:10 如何计算积分?
  • 作  者:王晓东著
  • 出 版 社:北京:机械工业出版社
  • 出版年份:2012
  • ISBN:7111379241
  • 页数:243 页
图书介绍:为了适应培养我国计算机各类人才的需要,结合我国高等学校教育工作的现状,立足培养学生能跟上国际计算机科学技术的发展水平,更新教学内容和教学方法,本书以基本数据结构为知识单元系统地介绍数据结构知识与应用、计算机算法的设计与分析方法,以期为计算机学科的学生提供一个广泛坚实的数据结构基础知识。

第1章 引论 1

1.1 算法及其复杂性的概念 1

1.1.1 算法与程序 1

1.1.2 算法复杂性的概念 2

1.1.3 算法复杂性的渐近性态 3

1.2 算法的表达与数据表示 4

1.2.1 问题求解 4

1.2.2 表达算法的抽象机制 5

1.3 抽象数据类型 8

1.3.1 抽象数据类型的基本概念 8

1.3.2 使用抽象数据类型的好处 9

1.4 数据结构和抽象数据类型 10

1.5 用C语言描述数据结构与算法 11

1.5.1 变量和指针 11

1.5.2 函数与参数传递 12

1.5.3 结构 13

1.5.4 动态存储分配 14

本章小结 14

习题 15

算法实验 16

算法实验题1.1 哥德巴赫猜想问题 16

算法实验题1.2 连续整数和问题 16

第2章 表 17

2.1 表的基本概念 17

2.2 用数组实现表 18

2.3 用指针实现表 22

2.4 用间接寻址方法实现表 25

2.5 用游标实现表 27

2.6 循环链表 32

2.7 双链表 34

2.8 表的搜索游标 37

2.8.1 用数组实现表的搜索游标 38

2.8.2 单循环链表的搜索游标 38

2.9 应用 40

本章小结 41

习题 41

算法实验 43

算法实验题2.1 向量分类问题 43

算法实验题2.2 条形图轮廓问题 43

第3章 栈 45

3.1 栈的基本概念 45

3.2 用数组实现栈 46

3.3 用指针实现栈 48

3.4 应用 50

本章小结 52

习题 52

算法实验 54

算法实验题3.1 车皮编序问题 54

算法实验题3.2 单柱Hanoi塔问题 55

算法实验题3.3 多栈模拟问题 55

算法实验题3.4 亲兄弟问题 56

第4章 队列 57

4.1 队列的基本概念 57

4.2 用指针实现队列 58

4.3 用循环数组实现队列 60

4.4 应用 64

本章小结 66

习题 66

算法实验 67

算法实验题4.1 组队列问题 67

算法实验题4.2 双栈队列问题 68

算法实验题4.3 猴子分桃问题 69

算法实验题4.4 逆序表问题 69

第5章 递归 71

5.1 递归的概念 71

5.2 递归程序设计 76

5.2.1 分治与递归 76

5.2.2 动态规划 77

5.2.3 回溯与递归 83

5.3 模拟递归 85

5.4 应用 87

本章小结 89

习题 89

算法实验 90

算法实验题5.1 删数问题 90

算法实验题5.2 最优服务次序问题 91

算法实验题5.3 最大k乘积问题 91

算法实验题5.4 字符串比较问题 92

第6章 排序与选择 93

6.1 简单排序算法 93

6.1.1 冒泡排序 94

6.1.2 插入排序 94

6.1.3 选择排序 95

6.1.4 简单排序算法的计算复杂性 95

6.2 快速排序算法 96

6.2.1 算法基本思想及实现 96

6.2.2 算法的性能 97

6.2.3 随机快速排序算法 98

6.2.4 非递归快速排序算法 98

6.2.5 三数取中划分算法 99

6.2.6 三划分快速排序算法 100

6.3 合并排序算法 101

6.3.1 算法基本思想及实现 101

6.3.2 对基本算法的改进 102

6.3.3 自底向上的合并排序算法 102

6.3.4 自然合并排序 103

6.3.5 链表结构的合并排序算法 103

6.4 线性时间排序算法 104

6.4.1 计数排序 104

6.4.2 桶排序 105

6.5 中位数与第k小元素 106

6.5.1 平均情况下的线性时间选择算法 107

6.5.2 最坏情况下的线性时间选择算法 108

6.6 应用 109

本章小结 110

习题 111

算法实验 112

算法实验题6.1 交换排序问题 112

算法实验题6.2 DNA排序问题 112

算法实验题6.3 输油管道问题 113

算法实验题6.4 最优服务次序问题 114

第7章 树 115

7.1 树的定义 115

7.2 树的遍历 117

7.3 树的表示法 119

7.3.1 父结点数组表示法 119

7.3.2 儿子链表表示法 119

7.3.3 左儿子右兄弟表示法 120

7.4 二叉树 120

7.5 ADT二叉树 122

7.6 二叉树的实现 123

7.6.1 二叉树的顺序存储结构 123

7.6.2 二叉树的结点度表示法 124

7.6.3 用指针实现二叉树 124

7.7 线索二叉树 128

7.8 应用 129

本章小结 132

习题 133

算法实验 135

算法实验题7.1 层序列表问题 135

算法实验题7.2 最近公共祖先问题 135

算法实验题7.3 子树问题 136

算法实验题7.4 同构二叉树问题 136

算法实验题7.5 后序中序遍历问题 137

第8章 集合 138

8.1 以集合为基础的抽象数据类型 138

8.1.1 集合的定义和记号 138

8.1.2 定义在集合上的基本运算 139

8.2 用位向量实现集合 140

8.3 用链表实现集合 142

8.4 应用 145

本章小结 146

习题 146

算法实验 147

算法实验题 半数集问题 147

第9章 符号表 148

9.1 实现符号表的简单方法 148

9.2 用散列表实现符号表 149

9.2.1 开散列 150

9.2.2 闭散列 151

9.2.3 散列函数及其效率 155

9.2.4 闭散列的重新散列技术 156

9.3 应用 156

本章小结 157

习题 158

算法实验 158

算法实验题9.1 伪随机排列问题 158

算法实验题9.2 字符串散列问题 159

算法实验题9.3 英文文本分析问题 159

算法实验题9.4 最长模式串问题 160

第10章 字典 161

10.1 字典的定义 161

10.2 用数组实现字典 162

10.3 用二叉搜索树实现字典 162

10.4 AVL树 169

10.4.1 AVL树的定义和性质 169

10.4.2 旋转变换 170

10.4.3 AVL树的插入运算 173

10.4.4 AVL树的删除运算 174

10.5 应用 177

本章小结 179

习题 179

算法实验 180

算法实验题10.1 装箱问题 180

算法实验题10.2 电路板连线问题 181

算法实验题10.3 辞典问题 182

第11章 优先队列 183

11.1 优先队列的定义 183

11.2 用字典实现优先队列 184

11.3 优先级树和堆 184

11.4 用数组实现堆 186

11.5 可并优先队列 188

11.5.1 左偏树的定义 188

11.5.2 用左偏树实现可并优先队列 189

11.6 应用 192

本章小结 195

习题 195

算法实验 196

算法实验题11.1 多机调度问题 196

算法实验题11.2 整数字典问题 197

算法实验题11.3 最小权语言问题 197

算法实验题11.4 二叉搜索堆问题 198

第12章 并查集 199

12.1 并查集的定义及其简单实现 199

12.2 用父结点数组实现并查集 200

12.3 应用 203

本章小结 204

习题 204

算法实验 205

算法实验题12.1 二进制方程问题 205

算法实验题12.2 网络连通问题 206

算法实验题12.3 朋友问题 206

算法实验题12.4 无向图的连通分支问题 207

第13章 图 208

13.1 图的基本概念 208

13.2 抽象数据类型图 211

13.3 图的表示法 211

13.3.1 邻接矩阵表示法 211

13.3.2 邻接表表示法 212

13.3.3 紧缩邻接表 213

13.4 用邻接矩阵实现图 213

13.4.1 用邻接矩阵实现赋权有向图 213

13.4.2 用邻接矩阵实现赋权无向图 215

13.4.3 用邻接矩阵实现有向图 216

13.4.4 用邻接矩阵实现无向图 216

13.5 用邻接表实现图 217

13.5.1 用邻接表实现有向图 217

13.5.2 用邻接表实现无向图 219

13.5.3 用邻接表实现赋权有向图 220

13.5.4 用邻接表实现赋权无向图 222

13.6 图的遍历 223

13.6.1 广度优先搜索 223

13.6.2 深度优先搜索 225

13.7 最短路径 226

13.7.1 单源最短路径 226

13.7.2 所有顶点对之间的最短路径 229

13.8 最小支撑树 230

13.8.1 最小支撑树性质 230

13.8.2 Prim算法 231

13.8.3 Kruskal算法 233

13.9 图匹配 234

本章小结 236

习题 237

算法实验 238

算法实验题13.1 图的2着色问题 238

算法实验题13.2 赋权有向图中心问题 239

算法实验题13.3 最长简单路径问题 239

算法实验题13.4 计算机网络问题 240

算法实验题13.5 差分约束问题 240

算法实验题13.6 有截止时间的工作排序问题 241

参考文献 243