《数据结构实用教程》PDF下载

  • 购买积分:10 如何计算积分?
  • 作  者:孙涌编著
  • 出 版 社:北京:清华大学出版社
  • 出版年份:2006
  • ISBN:7302121362
  • 页数:237 页
图书介绍:本书是根据数据结构课程教学大纲的要求,结合作者多年实践积累而完成的具有工程实践价值的数据结构教材。全书共分8章,每章均先给出本章的教学重点和难点,明确理论和技能要求和教学方法,以方便教和学。其中,第1章说明开设数据结构课程的意义。第2章详细介绍了顺序表和链表结构本身及其实现,这是其他数据结构的两种实现基础。第3章采用顺序表和链表分别讲解最基本的线性数据结构——堆栈、队列和串。第4章和第5章介绍非线性数据结构——树和图。第6章提出了一种有工程应用价值的递归算法实现方法。第7章和第8章分别描述多种查找和排序算法及其实现,以开拓学生发散性思维方式。

目录 1

第1章 数据结构概论 1

1.1 数据结构与软件从业人员的未来发展 2

1.1.1 软件的可重用模型 2

1.1.2 数据结构在软件项目开发中的关键作用 2

1.1.3 数据结构与岗位分工 3

1.1.4 数据结构的重要地位与课程学习方法 4

1.2.1 数据结构基础 6

1.2 数据结构综述 6

1.2.2 常用数据结构说明 7

1.2.3 数据结构的实现基础 9

1.3 算法综述 10

1.3.1 算法初步 10

1.3.2 算法的构造 11

1.3.3 算法复杂度 13

1.3.4 基于递归的算法设计思想 14

1.4 数据结构与算法存在互为因果的辩证关系 15

习题 16

第2章 线性表 18

2.1 线性表的概念及其基本运算 19

2.1.1 线性表的逻辑描述 19

2.1.2 线性表的基本运算 19

2.2 顺序表——线性表的顺序存储方式 20

2.2.1 顺序存储结构 20

2.2.2 顺序表基本操作的算法实现 23

2.3.1 单向链表 33

2.3 链表——线性表的链接存储方式 33

2.2.3 顺序表性能小结 33

2.3.2 单向链表的基本操作 36

2.3.3 单向循环链表 51

2.3.4 双向链表和双向循环链表 52

2.3.5 链表性能小结 55

2.4 二维数组的数据压缩处理 55

2.4.1 有规律二维数组的一维化映射 55

2.4.2 无规律稀疏矩阵的数据压缩处理 57

习题 58

第3章 堆栈、队列和串 62

3.1 堆栈 63

3.1.1 堆栈的概念及其操作 63

3.1.2 堆栈的输出序列分析 64

3.1.3 基于顺序表的堆栈实现 64

3.1.4 基于链表的堆栈实现 65

3.1.5 堆栈应用 66

3.2 队列 68

3.2.1 队列的概念及其操作 68

3.2.2 循环队列 68

3.2.3 基于顺序表的队列实现 69

3.2.4 基于链表的队列实现 70

3.2.5 队列应用 71

3.3 串 72

3.3.1 串的概念及其操作 73

3.3.2 串存储结构描述 74

3.3.3 文本编辑 75

习题 76

第4章 树与二叉树 78

4.1.1 基本概念与属性 79

4.1 树与森林 79

4.1.2 树的存储结构 81

4.2 二叉树 82

4.2.1 基本概念 82

4.2.2 二叉树的存储结构 84

4.3 二叉树遍历 85

4.3.1 二叉树的深度优先遍历 86

4.3.2 二叉树的宽度优先遍历 89

4.3.3 二叉树遍历的工程化实现算法 91

4.4.1 树与二叉树的相互转换 92

4.4 树与森林的基本操作 92

4.4.2 森林与二叉树的相互转换 93

4.4.3 树的深度优先遍历 94

4.4.4 树的宽度优先遍历 94

4.5 二叉树应用之一——二叉排序树 95

4.5.1 二叉排序树的定义和遍历特征 95

4.5.2 二叉排序树基本操作的功能实现 95

4.6.1 Hufferman树的定义和特征 106

4.6 二叉树应用之二——Hufferman树 106

4.6.2 生成Hufferman树的算法思路 107

4.6.3 Hufferman树基本操作的功能实现 109

习题 116

第5章 图 118

5.1 基本概念 118

5.1.1 无向图 118

5.1.2 有向图 120

5.2.1 邻接矩阵表示法 121

5.2 图的存储结构 121

5.2.2 邻接表表示法 122

5.3 图的遍历 123

5.3.1 图的深度优先遍历 123

5.3.2 图的宽度优先遍历 124

5.4 生成树和最小生成树 125

5.4.1 生成树 126

5.4.2 最小生成树 126

5.4.3 基于知识的最小生成树 128

5.5 拓扑排序 132

5.6 关键路径法 135

5.7 最短路径 139

5.7.1 单点出发的最短路径问题 139

5.7.2 多点出发的最短路径问题 140

习题 145

第6章 基于树的工程性实用递归算法 147

6.1 算法的递归和非递归实现的性能分析 147

6.1.1 算法的递归实现方法性能分析 147

6.1.2 算法的非递归实现方法性能分析 150

6.1.3 算法的递归实现与非递归实现的比较 151

6.2 工程性实用递归算法解决方案 152

6.2.1 算法描述 152

6.2.2 基于树的工程性实用递归算法实现 152

6.3 新算法应用举例 155

6.3.1 fibonacci数列 155

6.3.2 汉诺塔 157

6.3.3 N皇后问题 160

习题 165

第7章 查找 167

7.1 基本概念和意义 167

7.2 线性表查找 168

7.2.1 线性表的顺序查找 168

7.2.2 顺序表的折半查找 170

7.2.3 顺序表的分块查找 172

7.2.4 线性表的Hash散列查找 173

7.3.1 二叉排序树 176

7.3 基于树的结点查找 176

7.3.2 平衡二叉树 177

7.3.3 一般二叉树的结点查找 182

习题 183

第8章 排序 185

8.1 基本概念 185

8.2 插入排序 186

8.2.1 直接插入排序 186

8.2.2 Shell排序 188

8.3.1 冒泡排序 190

8.3 交换排序 190

8.3.2 快速排序 191

8.4 选择排序 195

8.4.1 直接选择排序 195

8.4.2 二次选择排序 197

8.4.3 堆排序 199

8.5 其他归类排序方法 202

8.5.1 二路归并排序 202

8.5.3 基数排序 205

8.5.2 二叉排序树排序 205

8.6 排序小结 207

习题 208

附录A 实训项目 210

附录B 基于数组的函数原型定义和功能说明array.hc 217

附录C 基于链表的函数原型定义和功能说明chain.hc 222

附录D 基于链表的Hufferman树函数原型定义和功能说明Huffer.hc 230

附录E 教材电子课件所含文件清单及其运行环境说明 234

参考文献 237