《算法与数据结构 C++语言版》PDF下载

  • 购买积分:12 如何计算积分?
  • 作  者:冯广慧,吴昊,文全刚编著
  • 出 版 社:北京:电子工业出版社
  • 出版年份:2019
  • ISBN:7121350719
  • 页数:336 页
图书介绍:

第1章 概论 1

1.1什么是数据结构 1

1.2基本概念和术语 4

1.3算法和算法分析 7

1.3.1算法的定义及特性 7

1.3.2算法的设计要求 8

1.3.3算法效率的衡量方法 9

1.3.4算法的时间复杂度 10

1.3.5算法的空间复杂度 15

1.4抽象数据类型 16

习题 18

第2章 线性表 20

2.1线性表的类型定义 20

2.1.1线性表的概念 20

2.1.2线性表的抽象数据类型 21

2.2线性表的顺序表示和实现 22

2.2.1线性表的顺序表示 22

2.2.2顺序表基本运算的实现 23

2.3线性表的链式表示和实现 28

2.3.1线性表的链式表示 29

2.3.2单链表上基本运算的实现 32

2.4双链表 40

2.5循环链表 44

2.6线性表实现方法的比较 46

2.7算法设计举例 47

习题 52

第3章 栈和队列 55

3.1栈 55

3.1.1栈的类型定义 55

3.1.2顺序栈的表示和实现 57

3.1.3链栈的表示和实现 60

3.2栈的应用举例 62

3.2.1十进制数转换为其他进制数 62

3.2.2表达式中括号的匹配检查 63

3.2.3表达式求值 64

3.2.4利用栈消除递归 72

3.3队列 77

3.3.1队列的类型定义 77

3.3.2循环队列——队列的顺序表示和实现 78

3.3.3链队列——队列的链式表示和实现 82

3.4算法设计举例 83

习题 87

第4章 串 90

4.1串的基本概念 90

4.2串的表示和实现 91

4.2.1串的顺序存储结构 91

4.2.2串的链式存储结构 94

4.3串的模式匹配 95

4.3.1朴素的模式匹配算法 95

4.3.2 KMP算法 96

习题 101

第5章 数组 104

5.1数组的基本概念 104

5.2矩阵的压缩存储 107

5.2.1特殊矩阵 107

5.2.2稀疏矩阵 110

5.3算法设计举例 117

习题 121

第6章 树和二叉树 124

6.1树的概念 124

6.2二叉树的概念和性质 126

6.2.1二叉树的概念和抽象数据类型 126

6.2.2二叉树的性质 129

6.3二叉树的表示和实现 131

6.3.1二叉树的存储结构 131

6.3.2二叉树的遍历运算 133

6.3.3二叉树的其他基本运算 141

6.4树和森林 143

6.4.1树的存储结构 143

6.4.2树、森林和二叉树的相互转换 146

6.4.3树和森林的遍历运算 148

6.4.4树和森林的其他基本运算 151

6.5线索二叉树 154

6.5.1线索二叉树的概念 154

6.5.2线索二叉树的基本运算 157

6.6算法设计举例 161

习题 162

第7章 树和二叉树的应用 166

7.1表达式树 166

7.2哈夫曼树和哈夫曼编码 171

7.2.1哈夫曼树 171

7.2.2哈夫曼编码 175

7.3堆和优先级队列 178

7.3.1堆 178

7.3.2优先级队列 179

7.4并查集 184

7.5算法设计举例 187

习题 189

第8章 图 191

8.1图的概念 191

8.2图的存储结构 196

8.2.1邻接矩阵 196

8.2.2邻接表 200

8.2.3十字链表 205

8.2.4邻接多重表 205

8.3图的遍历 206

8.3.1深度优先遍历 207

8.3.2广度优先遍历 209

8.3.3图的连通分量和生成树 212

习题 213

第9章 图的应用 217

9.1最小生成树 217

9.1.1最小生成树的概念 217

9.1.2 Prim算法 218

9.1.3 Kruskal算法 222

9.2有向无环图及其应用 225

9.2.1拓扑排序 225

9.2.2关键路径 230

9.3最短路径 236

9.3.1单源点最短路径 236

9.3.2每对顶点之间的最短路径 240

习题 243

第10章 集合与查找 247

10.1基本概念 247

10.2静态查找表上的查找 248

10.2.1顺序查找 248

10.2.2折半查找 250

10.2.3分块查找 254

10.3动态查找表上的查找 256

10.3.1二叉查找树 256

10.3.2平衡二叉树 263

10.3.3 B树 275

10.3.4 B+树 280

10.3.5字典树 281

10.4算法设计举例 282

习题 285

第11章 散列表 288

11.1散列表的概念 288

11.2构造散列函数的方法 289

11.2.1直接定址法 289

11.2.2折叠法 289

11.2.3数字分析法 289

11.2.4平方取中法 290

11.2.5除留余数法 290

11.3解决冲突的方法 291

11.3.1闭散列法 291

11.3.2开散列法 293

11.4散列表的实现 294

11.4.1闭散列表的表示和实现 294

11.4.2开散列表的表示和实现 298

11.4.3闭散列表与开散列表的比较 302

11.5散列表的查找性能分析 302

习题 303

第12章 排序 306

12.1排序的基本概念 306

12.2插入排序 307

12.2.1直接插入排序 307

12.2.2折半插入排序 308

12.2.3希尔排序 309

12.3交换排序 310

12.3.1冒泡排序 310

12.3.2快速排序 311

12.4选择排序 315

12.4.1直接选择排序 315

12.4.2堆排序 316

12.4.3锦标赛排序 320

12.5归并排序 320

12.6基数排序 322

12.7各种内部排序方法的比较 324

12.8外部排序 327

12.8.1置换选择排序 328

12.8.2多路归并排序 330

习题 331

附录A 上机实验参考题目 334

参考文献 336