数据结构(第四版)
书 号:9787113214173
丛 书 名:普通高等教育“十一五”国家级规划教材
作 者:刘振鹏 王苗 赵红
译 者:
开 本:16开
装 帧:平装
正文语种:
出 版 社:中国铁道出版社有限公司
定 价:39元
-
内容简介
"本书根据教育部高等学校计算机科学与技术教学指导委员会关于“数据结构”课程的指
导性大纲编写而成,系统介绍了线性结构、树形结构、图形结构中的数据表示和处理方法,
以及查找、排序这两种重要的数据处理技术;阐明了各种数据结构内在的逻辑关系,探讨了
它们在计算机中的存储表示,以及定义在这些数据结构上的运算和算法实现,并对算法的效
率进行了简明的分析。
本书内容丰富、结构清晰,既注重基本原理,又重视算法实现,全书算法采用C++语言
描述,并加以详细的注释,可读性好、实用性强。每章均附有丰富的课后习题,便于学生巩
固所学知识。
本书适合作为高等院校计算机、通信工程、电子工程、信息管理等专业的教材,也可供
相关证书考试、考研或从事计算机应用与工程工作的科技工作者参考。" -
前言
数据结构是计算机及相关专业一门重要的专业基础课程,也是一门必修的核心课
程,主要介绍如何合理地组织和表示数据、如何有效地存储和处理数据、如何正确地
设计算法,以及对算法的优劣做出分析和评价。
在计算机科学的各个领域都要用到不同的数据结构,比如在操作系统中要用到队列;
编译系统中要用到栈、散列表、语法树;人工智能中要用到有向图。另外,面向对象程
序设计、计算机图形学、软件工程、多媒体技术等领域,都会用到数据结构的知识。
数据结构是一门理论与实际紧密联系的课程,旨在分析研究计算机加工的数据对
象的特性,以便选择适当的数据结构和存储结构,从而使建立在其上的解决问题的算
法达到最优。数据结构课程涉及各种离散结构在计算机上如何存储和处理,其内容丰
富、涉及面广,而且还在随各种基于计算机的应用技术的发展,而不断增加新的内容。
本书层次分明、结构清晰,理论深度把握得当,侧重应用。在内容的组织方式上,
注重从问题求解的角度出发,讨论相关的基本理论、数据和算法抽象、数据结构与算法
设计,以及在 C++程序设计语言中的实现。通过学习本书,学生能够较透彻地理解各种
常用数据结构的逻辑结构、存储结构及相关算法的实现,全面掌握处理数据的理论和方
法;培养学生具备较深入的选用合适的数据结构、编写规范的高质量程序,以及评价算
法优劣的能力;使学生接受系统的、科学的分析问题和解决问题的训练,提高运用数据
结构解决实际问题的能力,为学习后续的软件课程奠定良好的基础。
本书编者结合多年的教学经验,在保持前三版基本框架的基础上进行了修订,完善和优
化了数据结构课程的体系内容:简化了稀疏矩阵的十字链表描述,完善了二叉树性质的证明,
增加平衡二叉树、各个排序过程举例等;用 C++语言重新定义了主要的数据结构,规范化了
全书的算法描述;丰富了习题的题型和内容;给出线性结构、树形结构、图形结构、查找和
排序等多个实验题目,难度适宜、应用性强,利于培养学生的理论联系实际的能力。
本书由刘振鹏、王苗、赵红编著,其中第 1 章~第 7 章由王苗编写修订,第8章~
第 10 章由赵红编写修订,最后由刘振鹏统一定稿。本书作者可以提供教材的电子讲
义和书中习题的答案,有需要者可在中国铁道出版社网站 http://www. 51eds.com进行
下载。
本书在写作和修订过程中,得到了许多专家和同事的大力支持和帮助,他们提出了许多中
肯的意见和建议,对本书的编写、修订起到了很大的指导作用,在此表示衷心的感谢。
本书编者是长期从事数据结构教学的一线教师,尽管做了很大的努力,但由于编
者精力、水平有限,书中难免有疏漏与不足之处,恳请读者批评指正。
编 者
2015年11 月 -
目录
第 1 章绪论......................................................................................................... 1
1.1 数据结构的概念.......................................................................................... 1
1.1.1 为什么要学习数据结构.................................................................... 2
1.1.2 相关概念和术语............................................................................... 4
1.1.3 数据结构课程的内容........................................................................ 6
1.2 数据类型和抽象数据类型............................................................................ 7
1.2.1 数据类型.......................................................................................... 7
1.2.2 抽象数据类型................................................................................... 8
1.3 算法和算法分析.......................................................................................... 9
1.3.1 算法特性.......................................................................................... 9
1.3.2 算法描述.........................................................................................10
1.3.3 算法性能分析与度量.......................................................................10
小结...................................................................................................................13
习题...................................................................................................................13
第 2 章线性表 ................................................................................................... 16
2.1 线性表的逻辑结构......................................................................................16
2.1.1 线性表的定义..................................................................................16
2.1.2 线性表的基本操作..........................................................................17
2.2 线性表的顺序存储及运算实现...................................................................17
2.2.1 顺序表.............................................................................................18
2.2.2 顺序表上基本运算的实现...............................................................19
2.2.3 顺序表应用举例..............................................................................22
2.3 线性表的链式存储和运算实现...................................................................24
2.3.1 单链表.............................................................................................24
2.3.2 单链表上基本运算的实现...............................................................26
2.3.3 循环链表.........................................................................................31
2.3.4 双向链表.........................................................................................32
2.3.5 静态链表.........................................................................................34
2.3.6 间接寻址.........................................................................................35
2.3.7 单链表应用举例..............................................................................35
2.4 顺序表和链表的比较..................................................................................37
小结...................................................................................................................38
习题...................................................................................................................38
数据结构 第四版
2
第 3 章栈和队列................................................................................................ 41
3.1 栈...............................................................................................................41
3.1.1 栈的定义及基本运算.......................................................................41
3.1.2 栈的存储实现和运算实现...............................................................42
3.1.3 栈的应用举例..................................................................................45
3.2 队列............................................................................................................54
3.2.1 队列的定义及基本运算...................................................................55
3.2.2 队列的存储实现及运算实现...........................................................55
3.2.3 队列应用举例..................................................................................60
小结...................................................................................................................62
习题...................................................................................................................63
第 4 章串 .......................................................................................................... 65
4.1 串及其基本运算.........................................................................................65
4.1.1 串的基本概念..................................................................................65
4.1.2 串的基本运算..................................................................................66
4.2 串的定长顺序存储及基本运算...................................................................66
4.2.1 串的定长顺序存储..........................................................................67
4.2.2 定长顺序串的基本运算...................................................................67
4.2.3 模式匹配.........................................................................................69
4.3 串的堆存储结构.........................................................................................74
4.3.1 串名的存储映像..............................................................................74
4.3.2 堆存储结构.....................................................................................75
4.3.3 基于堆结构的串的基本运算实现....................................................75
小结...................................................................................................................77
习题...................................................................................................................77
第 5 章数组和广义表......................................................................................... 79
5.1 数组............................................................................................................79
5.1.1 一维数组.........................................................................................79
5.1.2 多维数组.........................................................................................79
5.1.3 数组的内存映像..............................................................................80
5.2 特殊矩阵的压缩存储..................................................................................83
5.2.1 对称矩阵.........................................................................................83
5.2.2 三角矩阵.........................................................................................84
5.2.3 带状矩阵.........................................................................................85
5.3 稀疏矩阵....................................................................................................86
5.3.1 稀疏矩阵的三元组表存储...............................................................86
5.3.2 稀疏矩阵的十字链表存储...............................................................91
5.4 广义表........................................................................................................96
目 录
3
5.4.1 广义表的定义和基本运算...............................................................96
5.4.2 广义表的存储..................................................................................97
5.4.3 广义表基本操作的实现.................................................................100
小结.................................................................................................................102
习题.................................................................................................................103
第 6 章二叉树 ................................................................................................. 105
6.1 二叉树的定义与性质................................................................................105
6.1.1 二叉树的基本概念........................................................................105
6.1.2 二叉树的主要性质........................................................................107
6.2 二叉树的基本操作与存储实现.................................................................109
6.2.1 二叉树的存储................................................................................109
6.2.2 二叉树的基本操作及实现............................................................. 111
6.3 二叉树的遍历...........................................................................................114
6.3.1 二叉树的遍历方法及递归实现......................................................114
6.3.2 二叉树遍历的非递归实现.............................................................116
6.3.3 由遍历序列恢复二叉树.................................................................119
6.3.4 不用栈的二叉树遍历的非递归方法..............................................121
6.4 线索二叉树...............................................................................................121
6.4.1 线索二叉树的定义及结构.............................................................122
6.4.2 线索二叉树的基本操作实现.........................................................123
6.5 二叉树的应用举例....................................................................................129
6.5.1 查找数据元素................................................................................129
6.5.2 统计给定二叉树中叶结点的数目..................................................129
6.5.3 创建二叉树的二叉链表存储.........................................................130
6.5.4 表达式运算...................................................................................131
6.6 哈夫曼树..................................................................................................131
6.6.1 问题引入.......................................................................................131
6.6.2 哈夫曼树的基本概念及其构造方法..............................................132
6.6.3 哈夫曼树的构造算法.....................................................................134
6.6.4 哈夫曼编码...................................................................................135
小结.................................................................................................................138
习题.................................................................................................................138
第 7 章树与森林.............................................................................................. 141
7.1 树的概念与表示.......................................................................................141
7.1.1 树的定义及相关术语.....................................................................141
7.1.2 树的表示.......................................................................................143
7.2 树的基本操作与存储................................................................................143
7.2.1 树的基本操作................................................................................144
7.2.2 树的存储结构................................................................................144
数据结构 第四版
4
7.3 树、森林与二叉树的转换.........................................................................148
7.3.1 树转换为二叉树............................................................................148
7.3.2 森林转换为二叉树........................................................................148
7.3.3 二叉树转换为树和森林.................................................................149
7.4 树和森林的遍历.......................................................................................150
7.4.1 树的遍历.......................................................................................150
7.4.2 森林的遍历...................................................................................151
7.5 树的应用举例...........................................................................................151
7.5.1 判定树...........................................................................................151
7.5.2 集合的表示...................................................................................152
7.5.3 等价问题.......................................................................................154
小结.................................................................................................................155
习题.................................................................................................................156
第 8 章图 ........................................................................................................ 158
8.1 图的基本概念...........................................................................................158
8.1.1 图的定义和术语............................................................................158
8.1.2 图的基本操作及类定义.................................................................161
8.2 图的存储结构...........................................................................................163
8.2.1 邻接矩阵.......................................................................................163
8.2.2 邻接表...........................................................................................165
8.2.3 十字链表.......................................................................................167
8.2.4 邻接多重表...................................................................................170
8.3 图的遍历..................................................................................................171
8.3.1 深度优先搜索................................................................................172
8.3.2 广度优先搜索................................................................................173
8.3.3 应用图的遍历判定图的连通性......................................................175
8.3.4 生成树和生成森林........................................................................176
8.4 最小生成树...............................................................................................177
8.4.1 最小生成树的概念........................................................................178
8.4.2 普里姆(Prim)算法.....................................................................179
8.4.3 克鲁斯卡尔(Kruskal)算法.........................................................181
8.5 最短路径..................................................................................................183
8.5.1 迪杰斯特拉(Dijkstra)算法........................................................183
8.5.2 弗洛伊德(Floyd)算法................................................................187
8.6 拓扑排序与关键路径................................................................................188
8.6.1 有向无环图的概念........................................................................189
8.6.2 拓扑排序.......................................................................................190
8.6.3 关键路径.......................................................................................194
小结.................................................................................................................199
目 录
5
习题.................................................................................................................200
第 9 章查找..................................................................................................... 203
9.1 基本概念..................................................................................................203
9.1.1 相关术语.......................................................................................203
9.1.2 查找表结构...................................................................................204
9.2 静态查找表...............................................................................................205
9.2.1 顺序查找.......................................................................................205
9.2.2 折半查找.......................................................................................206
9.2.3 插值查找和斐波那契查找.............................................................209
9.2.4 分块查找.......................................................................................210
9.3 二叉排序树...............................................................................................211
9.3.1 二叉排序树的定义........................................................................211
9.3.2 二叉排序树的查找过程.................................................................211
9.3.3 二叉排序树的插入操作.................................................................212
9.3.4 二叉排序树的删除操作.................................................................213
9.4 平衡二叉树...............................................................................................216
9.4.1 平衡二叉树的定义........................................................................216
9.4.2 平衡二叉树的平衡化旋转.............................................................217
9.4.3 平衡二叉树的插入........................................................................219
9.4.4 平衡二叉树的查找性能分析.........................................................223
9.5 B树和B
+树..............................................................................................224
9.5.1 B树的定义....................................................................................224
9.5.2 B树的查找....................................................................................225
9.5.3 B树的插入....................................................................................226
9.5.4 B树的删除....................................................................................229
9.5.5 B
+树..............................................................................................230
9.6 哈希表查找...............................................................................................231
9.6.1 哈希表与哈希方法........................................................................231
9.6.2 常用的哈希函数............................................................................232
9.6.3 处理冲突的方法............................................................................234
9.6.4 哈希表的查找性能分析.................................................................236
小结.................................................................................................................237
习题.................................................................................................................238
第 10 章排序................................................................................................... 241
10.1 排序的基本概念.....................................................................................241
10.1.1 相关术语.....................................................................................241
10.1.2 排序的时间开销..........................................................................242
10.2 插入排序................................................................................................242
10.2.1 直接插入排序..............................................................................242
数据结构 第四版
6
10.2.2 折半插入排序..............................................................................243
10.2.3 表插入排序.................................................................................244
10.2.4 希尔排序.....................................................................................247
10.3 交换排序................................................................................................248
10.3.1 冒泡排序.....................................................................................248
10.3.2 快速排序.....................................................................................249
10.4 选择排序................................................................................................252
10.4.1 简单选择排序..............................................................................252
10.4.2 树形选择排序..............................................................................253
10.4.3 堆排序.........................................................................................254
10.5 归并排序................................................................................................256
10.6 基数排序................................................................................................258
10.6.1 多关键码排序..............................................................................258
10.6.2 链式基数排序..............................................................................259
10.7 外排序....................................................................................................262
10.7.1 外排序的方法..............................................................................262
10.7.2 多路平衡归并的实现...................................................................263
小结.................................................................................................................266
习题.................................................................................................................267
附录................................................................................................................... 271
附录A 线性结构............................................................................................271
附录B 树形结构............................................................................................273
附录C 图形结构............................................................................................274
附录D 查找和排序........................................................................................276
参考文献............................................................................................................ 278 -
作者介绍
主要著译者顺序姓名学历职称学科专长通讯地址1刘振鹏 博士 教授 计算机专业工作单位河北大学 邮政编码 电话13803285676 2 工作单位 邮政编码 电话 3 工作单位 邮政编码 电话 审校者(主审者) 学历 工作单位 邮政编码 电话 职称 工作单位 邮政编码 电话 刘振鹏,男,1966年4月出生,博士,教授。河北大学网络中心主任,硕士生导师,河北省高等学校中青年骨干教师,中国计算机学会(CCF)高级会员,CCF网络与数据通信专业委员会委员,CCF互联网专业委员会委员,中国通信学会云计算与SaaS专家委员会委员,中国教育信息化理事会副理事长,河北省高等院校信息网络技术研究会副理事长。王苗,1975年11月生,河北高阳人。1992年9月考入河北大学就读计算机及应用专业,1996年7月毕业,于同年留校任教至今。2002年被聘为讲师。2003年9月至2006年6月期间就读河北大学数学与计算机学院计算机应用技术专业研究生,获硕士学位 。 赵红,女,副教授,博士,河北大学数学与计算机学院。 -
编辑推荐
-
书评书荐
-
附件下载
图书推荐