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

  • 购买积分:12 如何计算积分?
  • 作  者:王红梅,胡明,王涛编著
  • 出 版 社:北京:清华大学出版社
  • 出版年份:2005
  • ISBN:7302112584
  • 页数:313 页
图书介绍:数据结构是计算机专业教学计划中的核心课程,也是计算机及相关专业考研和水平等级考试的必考科目。要从事和计算机科学与技术相关的工作,尤其是计算机应用领域的开发和研制工作,必须具备坚实的数据结构基础。本书介绍了学习数据结构所用到的预备知识,叙述了数据结构、算法以及抽象数据类型的概念,介绍了线性表、栈、队列和串、数组和广义表、树和二叉树、图等常用数据结构,讨论了常用的查找、排序和索引技术,给出了较多的数据结构的应用实例,并通过一个案例将书中所有数据结构贯穿起来。本书内容丰富,层次清晰,深入浅出,可作为计算机及相关专业本、专科数据结构课程的教材,也可供从事计算机软件开发和应用的工程技术人员参考。

目录 1

第0章 预备知识 1

0.1 数学预备知识 1

0.1.1 常用数学术语 1

0.1.2 对数 1

0.1.3 级数求和 2

0.2 常用数学证明方法 3

0.2.1 反证法 3

0.2.2 数学归纳法 3

0.3.1 集合 4

0.3 离散数学预备知识 4

0.3.2 谓词 6

0.3.3 关系 6

0.4 C++程序设计语言预备知识 7

0.4.1 程序结构 7

0.4.2 变量、常量与数据类型 8

0.4.3 控制语句 13

0.4.4 函数 14

0.4.5 继承与派生 19

0.4.6 多态与虚函数 20

0.4.7 模板 21

0.4.8 动态存储分配 22

0.4.10 异常处理 23

0.4.9 输入与输出 23

第1章 绪论 27

1.1 数据结构的兴起和发展 27

1.2 数据结构的研究对象 29

1.3 数据结构的基本概念 31

1.3.1 数据结构 31

1.3.2 数据结构的访问接口 33

1.3.3 抽象数据类型 33

1.4 算法及算法分析 35

1.4.1 算法 35

1.4.2 算法分析 38

1.5 案例综述 42

习题1 45

思考题1 47

第2章 线性表 49

2.1 线性表的逻辑结构 49

2.1.1 线性表的定义 49

2.1.2 线性表的抽象数据类型定义 50

2.2 线性表的顺序存储结构及实现 51

2.2.1 线性表的顺序存储结构——顺序表 51

2.2.2 顺序表的实现 52

2.3 线性表的链接存储结构及实现 57

2.3.1 线性表的链接存储结构——单链表 58

2.3.2 单链表的实现 59

2.4.1 时间性能比较 66

2.4.2 空间性能比较 66

2.4 顺序表和单链表的比较 66

2.5 线性表的其他存储方法 67

2.5.1 循环链表 67

2.5.2 双链表 68

2.5.3 静态链表 69

2.5.4 间接寻址 70

2.6 应用举例 71

2.6.1 顺序表的应用举例——符号表 71

2.6.2 单链表的应用举例——一元多项式求和 72

2.6.3 高校学籍管理 75

习题2 76

思考题2 79

第3章 特殊线性表——栈、队列和串 81

3.1 栈 81

3.1.1 栈的逻辑结构 81

3.1.2 栈的顺序存储结构及实现 83

3.1.3 栈的链接存储结构及实现 88

3.1.4 顺序栈和链栈的比较 89

3.2 队列 90

3.2.1 队列的逻辑结构 90

3.2.2 队列的顺序存储结构及实现 91

3.2.3 队列的链接存储结构及实现 94

3.3 串 97

3.3.1 串的逻辑结构 97

3.2.4 循环队列和链队列的比较 97

3.3.2 串的存储结构 99

3.3.3 模式匹配 100

3.4 应用举例 104

3.4.1 栈的应用举例——递归 104

3.4.2 队列的应用举例——火车车厢重排 107

3.4.3 串的应用举例——恺撒密码 109

3.4.4 高校实验任务安排问题 110

习题3 111

思考题3 113

4.1 多维数组 115

4.1.1 数组的定义 115

第4章 广义线性表——多维数组和广义表 115

4.1.2 数组的存储结构与寻址 117

4.2 矩阵的压缩存储 118

4.2.1 特殊矩阵的压缩存储 119

4.2.2 稀疏矩阵的压缩存储 121

4.3 广义表 127

4.3.1 广义表的逻辑结构 127

4.3.2 广义表的存储结构及实现 129

4.4 应用举例 132

4.4.1 数组的应用举例——魔方阵 132

4.4.2 本科生选导师问题 134

习题4 .. 135

思考题4 137

5.1 树的逻辑结构 139

5.1.1 树的定义和基本术语 139

第5章 树和二叉树 139

5.1.2 树的抽象数据类型定义 142

5.1.3 树的遍历操作 143

5.2 树的存储结构 144

5.2.1 双亲表示法 144

5.2.2 孩子表示法 145

5.2.3 双亲孩子表示法 147

5.2.4 孩子兄弟表示法 147

5.3 二叉树的逻辑结构 148

5.3.1 二叉树的定义 148

5.3.2 二叉树的基本性质 150

5.3.3 二叉树的抽象数据类型定义 153

5.3.4 二叉树的遍历操作 154

5.4 二叉树的存储结构及实现 156

5.4.1 顺序存储结构 156

5.4.2 二叉链表 157

5.4.3 三叉链表 166

5.4.4 线索链表 167

5.5 树、森林与二叉树的转换 171

5.6 应用举例 175

5.6.1 二叉树的应用举例——哈夫曼树及哈夫曼编码 175

5.6.2 树的应用举例——8枚硬币问题 179

5.6.3 高校学生会组织机构的管理 180

习题5 182

思考题5 184

6.1 图的逻辑结构 185

6.1.1 图的定义和基本术语 185

第6章 图 185

6.1.2 图的抽象数据类型定义 189

6.1.3 图的遍历操作 191

6.2 图的存储结构及实现 194

6.2.1 邻接矩阵 194

6.2.2 邻接表 197

6.2.3 十字链表 202

6.2.4 邻接多重表 202

6.2.5 边集数组 203

6.2.6 图的存储结构的比较 204

6.3.2 有向图的连通性 205

6.3 图的连通性 205

6.3.1 无向图的连通性 205

6.3.3 生成树和生成森林 206

6.4 应用举例 206

6.4.1 最小生成树 206

6.4.2 最短路径 211

6.4.3 AOV网与拓扑排序 216

6.4.4 AOE网与关键路径 220

6.4.5 校园最短路径问题 223

习题6 224

思考题6 227

7.1.1 查找的基本概念 229

7.1 概述 229

第7章 查找技术 229

7.1.2 查找算法的性能 230

7.2 线性表的查找技术 231

7.2.1 顺序查找 231

7.2.2 折半查找 233

7.2.3 斐波那契查找 236

7.2.4 插值查找 237

7.3 树表的查找技术 238

7.3.1 二叉排序树 238

7.3.2 平衡二叉树 245

7.4.1 概述 249

7.4 散列表的查找技术 249

7.4.2 散列函数的设计 251

7.4.3 处理冲突的方法 253

7.4.4 散列查找的性能分析 257

7.4.5 开散列表与闭散列表的比较 258

习题7 260

思考题7 262

第8章 排序技术 263

8.1 概述 263

8.1.1 排序的基本概念 263

8.1.2 排序算法的性能 265

8.2 插入排序 265

8.2.1 直接插入排序 265

8.2.2 希尔排序 268

8.3.1 起泡排序 270

8.3 交换排序 270

8.3.2 快速排序 272

8.4 选择排序 277

8.4.1 简单选择排序 277

8.4.2 堆排序 279

8.5 归并排序 284

8.5.1 二路归并排序的非递归实现 284

8.5.2 二路归并排序的递归实现 288

8.6 各种排序方法的比较 289

习题8 292

思考题8 294

9.1 索引的基本概念 297

第9章 索引技术 297

9.2 线性索引技术 298

9.2.1 稠密索引 298

9.2.2 分块索引 299

9.2.3 多重表 300

9.2.4 倒排表 300

9.3 树形索引 301

9.3.1 2-3树 302

9.3.2 B?树 304

9.3.3 B+树 308

习题9 311

参考文献 313