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

  • 购买积分:11 如何计算积分?
  • 作  者:宁正元,王秀丽编著
  • 出 版 社:北京:清华大学出版社
  • 出版年份:2006
  • ISBN:7302118655
  • 页数:266 页
图书介绍:本书覆盖了《中国计算机科学与技术学科教程2002》中关于核心课程《算法与数据结构〉的所有知识单元和课程提纲,系统地介绍了各种常用的数据结构的有关知识和各种基本的检索排序算法。

第1章 算法与程序 1

1.1 算法的基本概念 1

1.1.1 什么是算法 1

目录 1

1.1.2 算法的基本特性 2

1.2 算法的表示 3

1.2.1 自然语言表示 3

1.2.2 流程图表示 3

1.2.3 N-S图表示 4

1.2.4 伪代码表示 4

1.2.5 程序语言表示 5

1.3.1 评价算法的标准 6

1.3 算法的设计与评价 6

1.3.2 算法的环路复杂度 7

1.3.3 算法的时空效率 8

1.3.4 常见的算法设计方法 11

1.4 算法与程序 14

1.4.1 程序的基本概念 14

1.4.2 问题求解与实现策略 15

1.4.3 程序调试与查错策略 16

1.4.4 程序设计方法概述 18

习题 22

2.1.1 数据、数据元素与数据类型 23

第2章 常用数据结构 23

2.1 数据类型与数据结构 23

2.1.2 数据结构的基本概念 25

2.1.3 抽象数据类型 27

2.2 数组 29

2.2.1 数组及其运算 29

2.2.2 数组的顺序存储结构 30

2.2.3 特殊矩阵的压缩存储 32

2.3 串 34

2.3.1 串的基本概念 35

2.3.2 串的定长顺序存储及运算实现 36

2.3.3 模式匹配 40

2.3.4 串的堆式动态存储及运算实现 44

2.3.5 汉字串 47

习题 50

上机实验题 52

第3章 简单数据结构 53

3.1 顺序表 53

3.1.1 线性表的基本概念 53

3.1.2 线性表的顺序存储结构——顺序表 54

3.1.3 顺序表上的基本运算 55

3.2.1 线性表的链式存储结构 链表 59

3.2 链表 59

3.2.2 单链表上的基本运算 61

3.2.3 循环链表和双向链表 66

3.2.4 线性表应用举例——一元多项式相加问题 68

3.3 栈 70

3.3.1 栈的概念及运算 70

3.3.2 顺序栈及运算实现 71

3.3.3 链栈及运算实现 74

3.3.4 栈的应用举例——递归的实现 75

3.4.1 队列的概念及其运算 78

3.4 队列 78

3.4.2 顺序队列及运算实现 79

3.4.3 链队列及运算实现 82

3.4.4 队列的应用举例——I/O缓冲区管理及其他 84

3.5 广义表 86

3.5.1 广义表的概念 86

3.5.2 广义表的存储结构及运算实现 87

3.5.3 广义表的应用举例——m元多项式的表示 89

习题 91

上机实验题 94

4.1 树的基本概念 95

4.1.1 树的定义及表示 95

第4章 树与二叉树 95

4.1.2 树的常用术语及运算 96

4.2 二叉树 98

4.2.1 二叉树的概念 98

4.2.2 二叉树的性质 99

4.2.3 二叉树的存储结构 101

4.2.4 二叉树的简单运算实现 103

4.3 二叉树的遍历 104

4.3.1 遍历二叉树的递归算法 104

4.3.2 遍历二叉树的非递归算法 106

4.3.3 遍历序列与二叉树的复原 110

4.3.4 基于遍历的几种二叉树运算的实现和应用举例 112

4.4 线索二叉树 114

4.4.1 线索二叉树的概念 114

4.4.2 线索二叉树的构造算法 115

4.4.3 线索二叉树上的运算实现 116

4.5 树和森林 118

4.5.1 树和森林的存储结构 118

4.5.2 树和森林与二叉树之间的转换 120

4.5.3 树和森林的遍历 122

4.5.4 树的应用举例——判定树 123

4.6 哈夫曼树 124

4.6.1 哈夫曼树的概念及其构造算法 124

4.6.2 哈夫曼树的应用——哈夫曼编码 126

习题 128

上机实验题 131

第5章 图与网 132

5.1 图与网的基本概念 132

5.1.1 图与网的定义 132

5.1.2 图的相关术语 133

5.2 图与网的存储结构 135

5.2.1 邻接矩阵 135

5.2.2 邻接表与逆邻接表 136

5.2.3 邻接多重表 138

5.3 图的遍历 139

5.3.1 深度优先搜索遍历 140

5.3.2 广度优先搜索遍历 141

5.3.3 图的遍历应用举例 图的连通性与生成树 142

5.4 无向连通网的最小生成树 144

5.4.1 最小生成树的概念 144

5.4.2 Prim算法 144

5.4.3 Kruskal算法 147

5.5 有向网的最短路径 148

5.5.1 单源最短路径 148

5.5.2 所有顶点对之间的最短路径 150

5.6.1 有向无环图的概念 152

5.6 有向无环图及其应用 152

5.6.2 AOV网与拓扑排序 153

5.6.3 AOE网与关键路径 158

习题 163

上机实验题 165

第6章 数据结构的程序实现 166

6.1 基本的实现策略 166

6.1.1 简单数据结构的程序实现 166

6.1.4 数据结构的数组实现 167

6.2 动态结构的静态实现 167

6.1.3 数据结构的链式实现 167

6.1.2 构造型数据结构的程序实现 167

6.2.1 静态链表 168

6.2.2 二叉树的静态二叉链表表示法 169

6.2.3 树和森林的双亲表示法 169

6.2.4 哈夫曼算法的静态实现 170

6.3 大批量数据的组织策略 174

6.3.1 文件的组织 175

6.3.2 数据库技术 181

6.4 数据结构在问题建模中的应用 184

6.4.1 Josephus问题 184

6.4.2 教务管理与二分图 187

6.4.3 学籍管理系统中的数据组织 190

上机实验题 195

习题 195

第7章 检索及基本算法 196

7.1 检索的概念 196

7.2 线性表的检索 198

7.2.1 顺序检索 198

7.2.2 二分法检索 199

7.2.3 黄金分割点检索 202

7.2.4 精算点检索 204

7.2.5 分块检索 206

7.3 树表的检索 208

7.3.1 二叉检索树 208

7.3.2 二叉检索树的平衡性调整 215

7.3.3 B树和B?树 219

7.4 哈希检索 221

7.4.1 哈希检索与哈希表 222

7.4.2 哈希函数的构造方法 222

7.4.3 地址冲突的消解策略 225

7.4.4 哈希表的检索算法及性能分析 226

习题 228

上机实验题 231

第8章 排序及基本算法 232

8.1 排序的基本概念 232

8.2 插入排序 233

8.2.1 直接插入排序 234

8.2.2 希尔排序 235

8.2.3 其他插入排序简介 238

8.3 交换排序 241

8.3.1 冒泡排序 241

8.3.2 快速排序 243

8.4 选择排序 246

8.4.1 直接选择排序 246

8.4.2 树形选择排序 247

8.4.3 堆排序 248

8.5 归并排序 252

8.5.1 归并相邻两个有序序列 253

8.5.2 二路归并排序的递归算法 253

8.5.3 二路归并排序的非递归算法 254

8.6 基数排序 255

8.6.1 多关键字排序 255

8.6.2 链式基数排序 256

8.7 各种内部排序方法的比较和选择 259

8.8 外部排序简介 261

习题 263

上机实验题 265

参考文献 266