计算机类专业教育 > 数据结构与算法类
数据结构 (第四版)
书号:9787113214173 套系名称:普通高等教育“十一五”国家级规划教材/普通高等院校计算机类专业规划教材·精品系列
作者:刘振鹏 王苗 赵红 出版日期:2016-02-01
定价:39.00 页码 / 开本:292 /16
策划编辑:周海燕 责任编辑:周海燕 彭立辉
适用专业:无 适用层次:高等院校
最新印刷时间:
资源下载
教学课件
教学素材(暂无)
习题答案(暂无)
教学案例(暂无)
教学设计(暂无)
教学视频(暂无)
内容简介
前言
目录
作者介绍
图书特色
本书根据教育部高等学校计算机科学与技术教学指导委员会关于“数据结构”课程的指导性大纲编写而成,系统介绍了线性结构、树形结构、图形结构中的数据表示和处理方法,以及查找、排序这两种重要的数据处理技术;阐明了各种数据结构内在的逻辑关系,探讨了它们在计算机中的存储表示,以及定义在这些数据结构上的运算和算法实现,并对算法的效率进行了简明的分析。
本书内容丰富、结构清晰,既注重基本原理,又重视算法实现,全书算法采用C++语言描述,并加以详细的注释,可读性好、实用性强。每章均附有丰富的课后习题,便于学生巩固所学知识。
本书适合作为高等院校计算机、通信工程、电子工程、信息管理等专业的教材,也可供相关证书考试、考研或从事计算机应用与工程工作的科技工作者参考。无
第 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本书为普通高等教育“十一五”国家级规划教材。本书根据教育部高等学校计算机科学与技术教学指导委员会关于“数据结构”课程的教学基本要求进行编写。