编辑推荐
本书是为全国高等院校计算机及相关专业开设数据结构课程而精心组织和编著的一本实用教材。它从1999年出版以来,累计重印近30次,总销量超过十一万册,深受广大读者和专家的好评,相继被许多高校选定为教科书和考研参考书,并被列选为“十一五”规划教材。
内容简介
本书是为全国高等院校计算机及相关专业开设数据结构课程而精心组织和编著的一本实用教材。它从1999年出版以来,一直深受广大读者和专家的好评,相继被许多高校选定为教科书和考研参考书,并被列选为“十一五”规划教材。这次对本书进行了认真和全面的修订,形成第2版,相信会得到更广泛的认可,对数据结构学科的教学和发展产生积极的影响。
本书从计算机学科发展和应用的实际需要出发,对各种常用的数据结构,从逻辑结构、存储结构、运算种类、运算方法和算法等各个方面进行了深入细致的解剖和分析,使读者更容易理解基本概念和知识,能够轻松地进行算法设计和上机操作的训练,大大提高软件开发与设计的专业能力。
另外,与本书配套的习题参考解答也一并被修订和出版,为广大自学读者提供方便。
目录
第1章 绪论 1
1.1 常用术语 1
1.2 算法描述 11
1.3 算法评价 13
*1.4 与算法描述有关的C++知识 19
1.4.1 包含文件语句 20
1.4.2 数据类型 28
1.4.3 函数 36
1.4.4 运算符重载 41
习题1 43
第2章 线性表 48
2.1 线性表的定义和抽象数据类型 48
2.1.1 线性表的定义 48
2.1.2 线性表的抽象数据类型 49
2.1.3 操作举例 50
2.2 线性表的顺序存储和操作实现 51
2.2.1 线性表的顺序存储结构 51
2.2.2 顺序存储下的线性表操作的实现 53
*2.3 线性表应用举例 62
2.4 线性表的链接存储结构 67
2.5 线性表操作在单链表上的实现 75
*2.6 多项式计算 83
2.6.1 多项式表示与求值 83
2.6.2 两个多项式相加 88
习题2 91
第3章 集合、稀疏矩阵和广义表 94
3.1 集合的定义和抽象数据类型 94
3.1.1 集合定义 94
3.1.2 集合的抽象数据类型 94
3.2 集合的顺序存储结构和操作实现 95
3.3 集合的链接存储结构和操作实现 102
3.4 稀疏矩阵 108
3.4.1 稀疏矩阵的定义 108
3.4.2 稀疏矩阵的存储结构 110
*3.4.3 稀疏矩阵的运算 113
3.5 广义表 120
3.5.1 广义表的定义 120
3.5.2 广义表的存储结构 122
3.5.3 广义表的运算 123
3.5.4 简单程序举例 127
习题3 128
第4章 栈和队列 131
4.1 栈 131
4.1.1 栈的定义 131
4.1.2 栈的抽象数据类型 131
4.2 栈的顺序存储结构和操作实现 132
4.3 栈的链接存储结构和操作实现 136
4.4 栈的简单应用举例 138
4.5 算术表达式的计算 142
4.5.1 算术表达式的两种表示 142
4.5.2 后缀表达式求值的算法 144
4.5.3 把中缀表达式转换为后缀表达式的算法 146
4.6 栈与递归 150
4.7 队列 160
4.7.1 队列的定义 160
4.7.2 队列的抽象数据类型 161
4.7.3 队列的顺序存储结构和操作实现 162
4.7.4 队列的链接存储结构和操作实现 165
*4.8 队列应用举例 169
习题4 173
第5章 树 178
5.1 树的概念 178
5.1.1 树的定义 178
5.1.2 树的表示 180
5.1.3 树的基本术语 181
5.1.4 树的性质 182
5.2 二叉树 183
5.2.1 二叉树的定义 183
5.2.2 二叉树的性质 184
5.2.3 二叉树的抽象数据类型 186
5.2.4 二叉树的存储结构 187
5.3 二叉树遍历 189
5.4 二叉树其他运算 193
5.5 树的存储结构和运算 198
5.5.1 树的抽象数据类型 198
5.5.2 树的存储结构 199
5.5.3 树的运算 201
习题5 207
第6章 特殊二叉树 212
6.1 二叉搜索树 212
6.1.1 二叉搜索树的定义 212
6.1.2 二叉搜索树的抽象数据类型 212
6.1.3 二叉搜索树的运算 213
6.2 堆 220
6.2.1 堆的定义 220
6.2.2 堆的抽象数据类型 221
6.2.3 堆的存储结构 221
6.2.4 堆的运算 222
6.3 哈夫曼树 227
6.3.1 基本术语 227
6.3.2 构造哈夫曼树 228
*6.3.3 哈夫曼编码 231
*6.4 线索二叉树 234
6.4.1 二叉树的线索化 234
6.4.2 利用线索进行遍历 238
*6.5 平衡二叉树 241
6.5.1 平衡二叉树的定义 241
6.5.2 平衡二叉树的调整 242
习题6 247
第7章 图 249
7.1 图的概念 249
7.1.1 图的定义 249
7.1.2 图的基本术语 250
7.1.3 图的抽象数据类型 253
7.2 图的存储结构 254
7.2.1 邻接矩阵 254
7.2.2 邻接表 257
7.2.3 边集数组 262
7.3 图的遍历 264
7.3.1 深度优先搜索遍历 264
7.3.2 广度优先搜索遍历 267
7.3.3 非连通图的遍历 269
习题7 271
第8章 图的应用 273
8.1 图的生成树和最小生成树 273
8.1.1 生成树和最小生成树的概念 273
8.1.2 普里姆算法 275
8.1.3 克鲁斯卡尔算法 278
8.2 最短路径 281
8.2.1 最短路径的概念 281
8.2.2 从一顶点到其余各顶点的最短路径 282
*8.2.3 每对顶点之间的最短路径 286
8.3 拓扑排序 290
8.3.1 拓扑排序的概念 290
8.3.2 拓扑排序算法 293
*8.4 关键路径 296
8.4.1 顶点事件的发生时间 296
8.4.2 计算关键路径的方法和算法 299
习题8 302
第9章 查找 305
9.1 查找的概念 305
9.2 顺序表查找 306
9.2.1 顺序查找 306
9.2.2 二分查找 307
9.3 索引查找 311
9.3.1 索引的概念 311
9.3.2 索引查找算法 314
*9.3.3 分块查找 316
9.4 散列查找 317
9.4.1 散列的概念 317
9.4.2 散列函数 319
9.4.3 处理冲突的方法 321
9.4.4 散列表的运算 324
9.5 B树查找 328
9.5.1 B_树定义 328
9.5.2 B_树查找 330
9.5.3 B_树插入 332
9.5.4 B_树删除 335
*9.5.5 对B_树的其他运算 337
*9.5.6 B+树简介 340
习题9 341
第10章 排序 343
10.1 排序的基本概念 343
10.2 插入排序 344
10.2.1 直接插入排序 345
*10.2.2 希尔排序 346
10.3 选择排序 347
10.3.1 直接选择排序 347
10.3.2 堆排序 348
10.4 交换排序 352
10.4.1 气泡排序 352
10.4.2 快速排序 354
10.5 归并排序 357
*10.6 各种内排序方法的比较 360
*10.7 外排序 362
10.7.1 外排序的概念 362
10.7.2 外排序算法 364
习题10 371
前言/序言
本书第一版出版至今已近7年,随着计算机数据结构学科的不断发展和教学的改革需要,在第一版的基础上,整理和加工形成了第二版。
第一版教材深受读者的喜爱,连续14次印刷,发行7万余册,被许多高校选定为教材和考研参考书。有许多读者在网站上发表评论,赞扬本书的风格和特色。
第二版对第一版的内容进行了优化和适当增删,并对一些章节进行了调整,由第1版中的8章修订为10章。原来的第5章“树”,改为第5章的“树和二叉树”和第6章的“特殊二叉树”两章,原来的第6章“图”,改为第7章“图”和第8章“图的应用”两章。
在第二版教材中,增加了“堆”结构的内容、集合结构的内容、线性表应用的内容、栈与队列应用的内容等;扩充了栈与递归应用的实例、二叉树和树查找运算的算法、生成哈夫曼树的算法、对B_树的插入算法等;修改了从二叉搜索树中删除结点的算法、对外存文件进行排序的算法等。当然还对许多内容进行了修改,力争反映该学科的先进性和科学性,反映作为教材的系统性、实用性和可读性。
第2版的内容较丰富,在目录、例题或习题中带星号“*”的内容可以不作为讲授内容和教学要求,留给学生自学。
书中所有算法和程序都在Visual C++ 6.0开发环境下调试运行通过,使得其正确性和有效性得到了进一步验证。
数据结构教材的内容包括两个层面:逻辑层面和实现层面。在逻辑层面上,介绍的是各种数据结构的特点,在每种数据结构上进行插入、删除、查找、遍历等相应运算的方 法,不涉及在计算机上实现运算的算法;在实现层面上,讨论的是如何把对数据结构进行运算的方法和步骤转换为用一种计算机程序设计语言描述的算法,并能够实际运行和得到验证。逻辑层面的学习是基本的和必需的,实现层面的学习是进一步的,对于计算机及信息类专业的学生,这两步都要学,而且都要学好,对于经管农林等类的学生,则应侧重 第1步。
数据结构课程是一门理论性和实践性都很强的课程,只有通过亲自编写算法、上机运行和调试程序,才能够加深理解和掌握所学的知识,提高程序设计和软件研发能力。
使用此教材,最好具有C++语言的基础,因为书中描述的数据类型和算法都是按照C++语言的规则编写的。当然,若是只具有其他计算机语言的基础,则使用该书时应同时自学C++语言。对于一般读者来说,只要有任一种计算机语言的基础,再自学任何其他计算机语言都是不困难的。
与本书配套的《数据结构实用教程习题参考解答》也同时改版,将同此主教材一并出版发行。与本书配套的《数据结构课程实验》一书暂时不需改版,仍可继续与这本第二版主教材配套使用。
在由清华大学出版社组织的此套系列教材中,本人还编著了《C++语言基础教程》一书,该书已重印十多次,便于自学,读者反映较好,并被列选为国家“十一五”规划教材,不妨推荐给读者参考。
衷心希望通过这次改版,使《数据结构实用教程》一书更加受到读者的爱戴和好评,也同时希望读者继续给予批评指正,本人深表谢意!
作者电子邮箱:xuxk@crtvu.edu.cn,联系电话:010-64910302。
徐孝凯
2006年8月
普通高等学院校计算机专业(本科)实用教程系列:数据结构实用教程 电子书 下载 mobi epub pdf txt