《数据结构教程 C++版》PDF下载

  • 购买积分:13 如何计算积分?
  • 作  者:陈明编著
  • 出 版 社:北京:清华大学出版社
  • 出版年份:2009
  • ISBN:9787302182641
  • 页数:399 页
图书介绍:本书系统地介绍了各种典型的数据结构算法及算法分析、面向对象的程序设计与C++方面的内容。

第1章 绪论 1

1.1数据结构的重要性 1

1.2面向对象程序设计 2

1.2.1面向对象方法 2

1.2.2 C++的特征及基本概念 3

1.3基本术语 4

1.4抽象数据类型 6

1.5数据结构的概念 8

1.6数据的逻辑结构 10

1.7数据的存储结构 11

1.8数据的运算 13

1.9数据的逻辑结构、存储结构及数据的运算的关系 14

1.10算法的描述和分析 14

1.10.1算法描述 14

1.10.2算法分析 15

小结 17

习题一 17

第2章 算法基础 19

2.1算法的相关概念 19

2.1.1算法的概念 19

2.1.2算法与程序 19

2.1.3数据结构与算法 20

2.2算法分析的相关概念 20

2.2.1算法分析的概念 21

2.2.2算法的时间复杂度 22

2.2.3算法的空间复杂度 25

2.3算法分析举例 26

2.3.1多项式问题 26

2.3.2静态搜索问题 27

2.4检验一个算法分析 30

小结 31

习题二 31

第3章 面向对象程序设计与C++ 35

3.1面向对象程序设计的概念 35

3.2面向对象的程序设计与C++ 35

3.3变量、常量与数据类型 36

3.3.1变量 36

3.3.2常量 36

3.3.3数据类型 37

3.4控制语句 41

3.4.1表达式语句和空语句 41

3.4.2块语句 41

3.4.3选择语句 42

3.4.4循环语句 42

3.4.5转移语句 42

3.5函数 43

3.5.1函数定义 43

3.5.2函数声明 43

3.5.3函数调用 44

3.5.4参数传递 44

3.5.5函数重载 46

3.5.6构造函数和析构函数 47

3.5.7友元函数 48

3.6继承与派生 48

3.7多态性、虚函数和纯虚函数 49

3.8模板 51

3.8.1模板的概念 51

3.8.2函数模板与模板函数 52

3.8.3类模板与模板类 54

3.9输入与输出 55

小结 56

习题三 56

第4章 线性表 57

4.1线性表及其抽象数据类型说明 57

4.1.1线性表及其逻辑结构 57

4.1.2线性表的抽象数据类型描述 61

4.2线性表的顺序存储 62

4.2.1顺序存储 62

4.2.2顺序表(LinearList)类的定义 63

4.2.3顺序表(LinearList)类的实现 64

4.3线性表的链式存储 67

4.3.1线性链表的存储结构 67

4.3.2线性链表(Chain)类的定义 69

4.3.3线性链表(Chain)类的实现 70

4.3.4循环链表 74

4.3.5循环链表CircularList类的实现 75

4.3.6双向链表 76

4.3.7可利用空间表 78

4.3.8表遍历器 79

4.4线性表的顺序存储和链式存储的比较 81

4.5链式存储结构的应用 82

4.5.1约瑟夫问题 82

4.5.2一元多项式求和 83

小结 87

习题四 87

第5章 栈和队列 91

5.1栈 91

5.1.1栈的定义 91

5.1.2栈的顺序存储结构 94

5.1.3栈的链式存储结构 97

5.1.4顺序栈和链式栈的比较 99

5.2栈的应用 100

5.2.1迷宫问题 100

5.2.2表达式求值 103

5.2.3汉诺塔问题 106

5.2.4数制转换 108

5.2.5行编辑 108

5.3队列 110

5.3.1队列的定义 110

5.3.2队列的顺序存储 112

5.3.3队列的链式存储 120

5.3.4顺序队列与链式队列的比较 123

5.3.5优先队列 124

5.4队列的应用 124

5.4.1解决设备速度不匹配问题 124

5.4.2舞伴问题 125

5.4.3火车车厢重排 126

小结 128

习题五 129

第6章 串 133

6.1 C++语言的字符和字符串 133

6.2串的基本概念 134

6.3串的存储结构 135

6.3.1串的顺序存储结构 136

6.3.2串的链式存储结构 137

6.3.3串的索引存储结构 138

6.4串的操作 139

6.4.1常用的C++字符串函数 139

6.4.2串的抽象数据类型的描述 141

6.4.3串的类定义 142

6.4.4部分成员函数的实现 143

6.5串的基本运算与实现 146

6.5.1串插入 146

6.5.2串删除 147

6.6模式匹配 149

6.6.1模式匹配的BF算法 149

6.6.2模式匹配的KMP算法 151

6.7串在文本编辑中的应用 155

小结 156

习题六 156

第7章 数组和广义表 159

7.1 C++中数组的定义及抽象数据类型表示 159

7.1.1 C++中数组的定义 159

7.1.2数组的抽象数据类型表示 160

7.2数组的顺序存储结构 161

7.3矩阵的压缩存储 162

7.3.1特殊矩阵的压缩存储 163

7.3.2稀疏矩阵的压缩存储 166

7.4广义表的概念 173

7.5广义表的存储结构表示 174

7.6广义表的运算 176

小结 183

习题七 183

第8章 树 187

8.1树 187

8.1.1树的定义 187

8.1.2树的表示形式 188

8.1.3树的常用术语 189

8.1.4树的基本操作 189

8.1.5一个树的接口 190

8.1.6树的基本算法 191

8.2二叉树 193

8.2.1二叉树的定义 193

8.2.2二叉树的性质 194

8.2.3二叉树的接口 197

8.2.4二叉树的存储结构 197

8.2.5二叉树的遍历 204

8.2.6二叉树遍历的应用 207

8.3线索二叉树 208

8.3.1线索二叉树的类定义 208

8.3.2中序线索二叉树 212

8.4树、森林和二叉树的关系 215

8.4.1树的存储结构 215

8.4.2森林与二叉树的转换 218

8.4.3树和森林的遍历 220

8.5哈夫曼树及其应用 222

8.5.1哈夫曼树的定义 222

8.5.2哈夫曼树的构造 223

8.5.3哈夫曼树在编码问题中的应用 226

小结 227

习题八 228

第9章 图 231

9.1图的基本概念 231

9.1.1图的定义及基本概念 231

9.1.2图的抽象数据类型 234

9.2图的存储结构 236

9.2.1邻接矩阵表示法 236

9.2.2邻接表 242

9.2.3十字链表 249

9.2.4邻接多重表 250

9.3图的遍历 252

9.3.1深度优先搜索 252

9.3.2广度优先搜索 254

9.3.3欧拉回路 255

9.4图的连通性 257

9.4.1连通分量 257

9.4.2重连通分量 259

9.5生成树 259

9.5.1普里姆(Prim)算法 261

9.5.2克鲁斯卡尔(Kruskal)算法 264

9.6最短路径 266

9.6.1单源最短路径 266

9.6.2求每一对顶点之间的最短路径 269

9.7拓扑排序 270

9.8关键路径 274

小结 280

习题九 280

第10章 查找 285

10.1基本概念 285

10.2线性表的查找 286

10.2.1顺序查找 286

10.2.2折半查找 288

10.2.3索引查找 290

10.2.4分块查找 294

10.3树表查找 296

10.3.1二叉查找树 296

10.3.2平衡二叉树 303

10.3.3 B—树 307

10.4哈希表的查找 309

10.4.1哈希表 309

10.4.2构造哈希表的基本方法 311

10.4.3解决冲突的方法 313

10.4.4哈希表的查找方法 315

10.5各种查找方法的比较 316

小结 317

习题十 318

第11章 排序 321

11.1基本概念 321

11.2内部排序 324

11.2.1插入排序 324

11.2.2交换排序 329

11.2.3选择排序 333

11.2.4归并排序 341

11.2.5基数排序 345

11.3内部排序方法比较 349

11.4外部排序简介 350

小结 351

习题十一 351

第12章 递归 355

12.1递归的定义 355

12.2常见递归问题 356

12.2.1汉诺塔问题 356

12.2.2八皇后问题 358

12.2.3表达式树 360

12.3递归的实现 362

12.4消除递归 365

12.4.1尾递归和单向递归的消除 365

12.4.2用栈模拟系统运行时的栈 367

12.5递归的评估 370

小结 371

习题十二 371

第13章 文件 375

13.1外存储器的介绍 375

13.2磁盘 376

13.3有关文件的概念 377

13.3.1文件及其类别 378

13.3.2文件的操作 379

13.4文件的组织 380

13.4.1顺序文件 381

13.4.2索引文件 382

13.4.3散列文件 388

13.4.4多关键字文件 389

13.5外部排序 391

13.5.1外部排序的简单方法 392

13.5.2两路归并 392

13.5.3多路归并 395

13.6文件的索引结构 396

13.6.1索引向量 396

13.6.2树形索引结构 397

小结 397

习题十三 397

参考文献 399