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

  • 购买积分:14 如何计算积分?
  • 作  者:齐德昱编著
  • 出 版 社:北京:清华大学出版社
  • 出版年份:2003
  • ISBN:7302068666
  • 页数:413 页
图书介绍:本书包括两大部分:面向对象数据结构和算法设计方法。内容涵盖了“数据结构与算法”课程的最新教学大纲规定内容。

第1章概述 1

1.1数据结构的兴起与发展 1

目 录 1

1.2数据结构的研究对象 2

1.3数据结构的概念 3

1.4数据结构的图示 4

1.5.2线性结构 5

1.5.3树形结构 5

1.5.1集合 5

1.5数据结构的分类 5

1.5.4图状结构 6

1.6数据结构的存储 6

1.6.1存储器表示 6

1.6.2存储映像 7

1.6.3基本存储方法 7

1.7数据结构的访问接口 9

1.7.1访问接口与逻辑结构 9

1.8.1对象与类 10

1.8面向对象方法 10

1.7.3基本操作的实现 10

1.7.2基本操作的种类 10

1.8.2面向对象方法要素 11

1.8.3面向对象方法的若干述评* 13

1.8.4面向对象程序设计语言* 14

1.9面向对象与数据结构 18

1.9.1面向对象与数据结构的关系 18

1.9.2面向对象数据结构 18

1.9.3数据结构的对象模型 19

习题 20

本章小结 20

第2章程序设计基本策略与方法 21

2.1算法 21

2.1.1算法的概念 21

2.1.2算法的时间复杂度与空间复杂度 22

2.1.3算法时间复杂度的度量 24

2.2穷举法 26

2.3递推法与迭代法 26

2.3.1递推法 26

2.3.2迭代法 27

2.4.1递归与递归程序的概念 29

2.4递归法 29

2.4.2递归程序设计要点 31

2.4.3递归程序执行机理 31

2.4.4 Hanoi塔问题与运行图 33

2.5逐步求精法 35

2.5.1基本思想 35

2.5.2应用示例 35

2.6.1基本思想 37

2.6分治法 37

2.6.2平面分治法示例——顺序统计 38

2.6.3迭代分治法示例——循环赛赛程安排* 40

本章小结 42

习题 43

第3章线性表 45

3.1线性表的逻辑结构 45

3.1.1基本概念 45

3.1.2线性表抽象模型 45

3.2.1基本存储方法 49

3.2线性表的顺序存储结构 49

3.2.2面向对象描述 50

3.3异常处理与下标选择器* 59

3.3.1异常处理 59

3.3.2下标选择器 62

3.4线性表的链式存储——线性链表 66

3.4.1链式存储方法 66

3.4.2线性链表的面向对象描述 66

3.4.3线性链表的面向对象实现 69

3.5.1带头结点的链表 79

3.5几种特殊线性链表 79

3.5.2循环链表 80

3.5.3双向链表 81

3.6线性表应用示例 82

3.6.1集合运算* 82

3.6.2一元多项式相加 83

3.6.3一元多项式的乘法* 92

本章小结 92

习题 93

4.1.1栈的逻辑结构 94

4.1栈 94

第4章特殊线性表——栈、队列、串 94

4.1.2栈的顺序存储结构 96

4.1.3栈的链式存储结构 100

4.2队列 104

4.2.1队列的逻辑结构 104

4.2.2队列的顺序存储结构 105

4.2.3队列的链式存储结构 110

4.3串 112

4.3.1串的逻辑结构 112

4.3.2串的存储结构 116

本章小结 119

习题 120

第5章数组与十字链表 121

5.1数组 121

5.1.1数组的定义与运算 121

5.1.2数组的存储结构与寻址问题 122

5.1.3一维数组的存储与寻址 122

5.1.4二维数组的存储与寻址 123

5.1.5多维数组的存储与寻址 124

5.1.6寻址公式的计算 125

5.2特殊数组* 126

5.2.1对称矩阵 126

5.2.2下/上三角矩阵 127

5.3稀疏矩阵 127

5.3.1稀疏矩阵的逻辑表示 127

5.3.2三元组表存储法 128

5.3.3三元组表的操作 130

5.3.4转置操作 132

5.4.1存储方式 138

5.4十字链表 138

5.4.2十字链表对象 140

5.4.3基本操作的实现 142

本章小结 146

习题 146

第6章树形结构 148

6.1树形结构的基本概念 148

6.1.1树形结构的定义 148

6.1.2基本术语 151

6.2.2几种特殊二叉树 152

6.2.1二叉树的基本概念 152

6.2二叉树 152

6.2.3二叉树的基本性质 153

6.2.4二叉树的遍历 155

6.3二叉树的存储结构 157

6.3.1顺序存储结构 157

6.3.2链式存储结构 158

6.4二叉树对象模型 160

6.4.1二叉树结点对象 160

6.4.2二叉树对象 161

6.5二叉树的遍历操作 165

6.5.1前序遍历操作 165

6.5.2中序遍历操作 169

6.5.3后序遍历操作 170

6.6二叉树的解析表示与存储结构之间的转化 173

6.6.1双遍历结果转化为树 173

6.6.2根据广义表表示创建树 175

6.6.3根据存储结构创建广义表* 178

6.6.4根据前序扩展序列创建树* 179

6.7.1线索化的概念 181

6.7二叉树的线索化 181

6.7.2线索化算法 182

6.8树与森林 184

6.8.1树与森林的遍历 184

6.8.2树、森林与二叉树之间的转化 186

6.8.3树的存储结构 187

6.9树对象模型* 190

6.9.1树结点对象 190

6.9.2树类 191

6.10.1 哈夫曼树的基本概念 194

6.10树的应用示例——哈夫曼树 194

6.10.2哈夫曼树构造算法 195

6.10.3哈夫曼树构造算法的实现 196

6.10.4哈夫曼判定树 199

6.10.5哈夫曼编码与数据压缩 200

本章小结 201

习题 202

第7章图结构 204

7.1图的基本概念 204

7.1.1图的概念 204

7.2图的对象抽象模型 207

7.1.2图的基本操作 207

7.2.1图结点抽象模型 208

7.2.2图的边对象抽象模型 208

7.2.3图抽象对象模型 209

7.3图的存储结构 211

7.3.1邻接矩阵法 212

7.3.2邻接表 214

7.3.3十字链表* 218

7.3.4邻接多重表* 220

7.4图的遍历 222

7.4.1概述 222

7.4.2深度优先遍历 222

7.4.3深度优先遍历的性质 227

7.4.4广度优先遍历 228

7.4.5广度优先遍历的性质 232

7.5拓扑排序 232

7.5.1拓扑序列与AOV网 233

7.5.2拓扑排序算法与实现 234

7.6.1AOE网与关键路径的概念 238

7.6 AOE网与关键路径 238

7.6.2关键路径的识别 241

本章小结 242

习题 242

第8章广义表 244

8.1广义表的逻辑结构 244

8.1.1基本概念 244

8.1.2 广义表逻辑图 246

8.1.3 广义表的遍历 246

8.2广义表的存储结构 247

8.2.1基本存储方法 247

8.1.5基本操作 247

8.1.4基本特性 247

8.2.2链式结构的高级语言描述 249

8.3 广义表对象模型* 250

8.3.1广义表元素接口 250

8.3.2 广义表接口 251

8.4广义表的分支单链表对象* 254

8.4.1结点对象 254

8.4.2分支单链表对象 255

8.5.1一般问题 256

8.5广义表操作的实现* 256

8.5.2遍历操作 257

8.5.3 广义表统计计数 258

8.5.4广义表的串行化与逆串行化 259

8.5.5 广义表的复制与求尾 261

8.6广义表结构的应用 262

8.6.1多元多项式的表示 262

8.6.2层次结构的表示 263

本章小结 264

习题 264

9.1.1检索的概念 266

第9章检索结构 266

9.1概述 266

9.1.2检索结构 267

9.1.3检索算法的时间与空间复杂度分析 267

9.1.4检索算法的判定树 268

9.2线性结构的检索 270

9.2.1顺序检索 270

9.2.2折半检索 271

9.2.3斐波那契检索* 275

9.3.1概述 280

9.2.4插值检索* 280

9.3线性索引结构 280

9.3.2稠密索引 281

9.3.3分块索引 281

9.4树形索引结构与二叉排序树 283

9.4.1树形索引结构概述 283

9.4.2二叉排序树的概念 283

9.4.3二叉排序树的检索 284

9.4.4二叉排序树的插入* 286

9.4.5二叉排序树的删除* 287

9.4.6二叉排序树的分析与最优二叉排序树* 292

9.5平衡二叉排序树* 293

9.5.1基本概念 293

9.5.2若干性质 293

9.5.3局部平衡调整算法 294

9.6 B树 299

9.6.1 B树的概念 299

9.6.2 B树的存储结构 300

9.6.5 B树的插入 301

9.6.3 B树的基本操作 301

9.6.4 B树的检索方法 301

9.6.6 B树的删除 304

9.6.7 B+树 306

9.6.8 B树对象模型 307

9.7散列结构 307

9.7.1概念 307

9.7.2散列技术中的主要问题 308

9.7.3散列过程 308

9.7.4散列函数的设计 308

9.7.5冲突解决 310

本章小结 311

习题 312

第10章外存与文件组织 313

10.1 外存结构 313

10.1.1 外存简介 313

10.1.2磁带结构 313

10.1.3磁盘结构 314

10.2 文件 315

10.2.1文件的概念 315

10.2.3文件的物理组织 316

10.2.2文件操作与存取方式 316

10.2.4缓冲技术 318

10.3顺序文件 318

10.4索引文件 319

10.5 ISAM* 320

10.5.1 ISAM的概念 320

10.5.2 ISAM结构的操作 321

10.6 VSAM 322

10.6.1 VSAM的概念 322

10.6.2 VSAM结构的操作 323

10.7散列方式 324

10.8多索引文件 325

10.8.1多重表文件 325

10.8.2倒排文件 326

本章小结 327

习题 327

第11章排序算法 329

11.1概述 329

11.2插入排序 330

11.2.1直接插入排序 331

11.2.2其他插入排序算法 332

11.3交换排序 332

11.3.1 冒泡排序 333

11.3.2 冒泡算法的改进 334

11.3.3快速排序* 335

11.4选择排序 336

11.4.1直接选择排序 336

11.4.2堆排序 337

11.5.2多段二路合并 345

11.5.1二路合并 345

11.5归并排序 345

11.5.3二路归并排序 346

11.6外排序简介 348

本章小结 348

习题 349

第12章算法设计基本方法 350

12.1 回溯法与限界剪枝法 350

12.1.1基本思想 350

12.1.2迷宫问题 351

12.1.3稳定婚姻问题* 357

12.1.4 n皇后问题 365

12.1.5限界剪枝法简介* 368

12.2动态规划法 368

12.2.1动态规划法要素与最优性原理 368

12.2.2最长公共子序列 369

12.2.3流水线调度问题* 374

12.2.4多源最短路径的Floyd算法 380

12.2.5 0-1背包问题 383

12.3贪心法 385

12.3.2背包问题 386

12.3.1基本思想 386

12.3.3 Prim最小生成树算法 389

12.3.4 Kruskal最小生成树算法 396

12.3.5单源最短路径 399

12.3.6贪心法要素总结 405

本章小结 406

习题 407

词汇索引 408

参考文献 413