标题：数据结构基于C++模板类的实现
图书信息
出版社: 人民邮电出版社; 第1版 (2008年11月1日)
丛书名: 高等院校计算机教材系列
平装: 354页
正文语种: 简体中文
开本: 16
ISBN: 9787115186430, 711518643X
条形码: 9787115186430
尺寸: 25.7 x 18.3 x 1.5 cm
重量: 544 g
作者简介
余腊生，中南大学副教授。主讲计算机专业本科“数据结构”和“计算机系统结构”课程以及研究生“软件构件技术”课程多年，其中“数据结构”课程被评为“中南大学精品课程”。主持和参加了包括国家863应用示范工程和湖南省自然科学基金项目在内的10多个科研项目，在国内外专业核心刊物发表论文30多篇，EI检索多篇。主要研究方向为Agerlt理论及其计算技术、结构与算法、网络数据库技术等。
内容简介
《数据结构基于C++模板类的实现》采用能够自然体现抽象数据类型概念的C++ 语言作为算法描述语言，把数据结构的原理和算法分析技术有机地结合在一起。全书内容包括线性表、栈、队列、递归、广义表、字符串、数组、树、图、查找以及各种排序算法，并给出了相关的实验指导。书中还引入了一些比较高级的数据结构和相关的算法分析技术。
《数据结构基于C++模板类的实现》可作为高等院校计算机或相关专业的教材，也可以作为其他程序类课程的辅导教材，同时也适用准备参加研究生入学考试、自学考试和各类程序设计竞赛的人员阅读。
目录
第1章　绪论  1
1.1　数据结构的概念  1
1.1.1　为什么要学习数据结构  2
1.1.2　相关概念和术语  4
1.2　抽象数据类型  6
1.2.1　数据类型  6
1.2.2　抽象数据类型  7
1.3　算法和算法分析  10
1.3.1　问题求解概述  10
1.3.2　算法特性  10
1.3.3　常见的算法类型  11
1.3.4　算法描述  12
1.3.5　算法性能分析与度量  12
习题  15
实习题  16
第2章　线性表  17
2.1　线性表的逻辑结构  17
2.1.1　线性表的定义  17
2.1.2　线性表的基本操作  17
2.2　线性表的顺序存储及操作实现  20
2.2.1　顺序表  20
2.2.2　顺序表上基本操作的实现  22
2.2.3　顺序表应用举例  25
2.2.4　小结  25
2.3　线性表的链式存储及操作实现  26
2.3.1　单向链表  26
2.3.2　单向链表上基本操作的实现  28
2.3.3　循环链表  34
2.3.4　双向链表  37
2.3.5　静态链表  41
2.3.6　单向链表应用举例  44
2.4　顺序表和链表的选取  47
习题  47
实习题  49
第3章　栈和队列  50
3.1　栈  50
3.1.1　栈的定义及基本操作  50
3.1.2　栈的存储及操作实现  51
3.1.3　栈应用举例  56
3.2　队列  66
3.2.1　队列的定义及基本操作  66
3.2.2　队列的存储及操作实现  66
3.2.3　优先队列  72
3.2.4　双端队列  74
3.2.5　队列应用举例  74
习题  79
实习题  80
第4章　递归和广义表  82
4.1　何谓递归  82
4.2　递归的执行过程  84
4.3　尾部递归函数  88
4.4　递归的应用  89
4.4.1　汉诺塔问题  89
4.4.2　迷宫问题  90
4.4.3　n皇后问题  92
4.5　递归程序到非递归程序的转换  94
4.5.1　简单转换  95
4.5.2　复杂转换  95
4.5.3　转化的形式化步骤  97
4.6　广义表  101
4.6.1　广义表的定义及基本操作  101
4.6.2　广义表的存储  103
4.6.3　广义表有关操作的实现  105
习题  107
实习题  108
第5章　字符串  110
5.1　字符串及其基本操作  110
5.1.1　字符串的基本概念  110
5.1.2　字符串的基本操作  111
5.2　字符串的定长顺序存储及基本操作  112
5.2.1　字符串的定长顺序存储  112
5.2.2　定长顺序串的基本操作  114
5.2.3　模式匹配  114
5.3　字符串的堆存储  123
5.3.1　字符串名的存储映像  123
5.3.2　堆存储结构  124
5.3.3　基于堆存储结构的基本操作  125
5.4　字符串的链式存储  128
5.5　字符串的应用  128
5.5.1　中文分词  128
5.5.2　遗传算法  130
习题  131
实习题  133
第6章　数组与矩阵  134
6.1　数组  134
6.1.1　数组的逻辑结构  134
6.1.2　数组的内存映像  137
6.2　特殊矩阵的压缩存储  139
6.2.1　对角矩阵  139
6.2.2　三对角矩阵  140
6.2.3　三角矩阵  141
6.2.4　对称矩阵  142
6.3　稀疏矩阵  143
6.3.1　稀疏矩阵的三元组表存储  143
6.3.2　稀疏矩阵的链式存储  149
6.3.3　稀疏矩阵的十字链表存储  149
习题  155
实习题  156
第7章　树与二叉树  157
7.1　树的定义及表示  157
7.1.1　树的定义  157
7.1.2　树的表示  158
7.1.3　树的特点  159
7.1.4　与树相关的基本术语  159
7.1.5　树形结构的逻辑特征  160
7.1.6　树的存储  161
7.2　二叉树  165
7.2.1　二叉树的定义及相关概念  165
7.2.2　二叉树的主要性质  167
7.2.3　二叉树的存储  168
7.2.4　二叉树的基本操作及实现  171
7.3　二叉树的遍历  171
7.3.1　二叉树的遍历方法及递归实现  171
7.3.2　二叉树遍历的非递归实现  173
7.3.3　遍历算法应用举例  176
7.3.4　由遍历序列恢复二叉树  178
7.3.5　不用栈的二叉树遍历非递归方法  179
7.4　线索二叉树  179
7.4.1　线索二叉树的定义及结构  179
7.4.2　线索二叉树的基本操作及实现  181
7.5　最优二叉树——赫夫曼树  187
7.5.1　赫夫曼树的基本概念  187
7.5.2　赫夫曼树的构造算法  189
7.5.3　赫夫曼树的应用  190
7.6　树、森林与二叉树的转换  193
7.6.1　树、森林到二叉树的转换  193
7.6.2　二叉树到树和森林的转换  194
7.7　树和森林的遍历  195
7.7.1　树的遍历  195
7.7.2　森林的遍历  196
7.7.3　树和森林的层次次序遍历  197
7.8　树的应用  197
7.8.1　判定树  197
7.8.2　集合的表示  198
习题  200
实习题  202
第8章　图  203
8.1　基本概念  203
8.1.1　图的定义和术语  203
8.1.2　图的抽象数据类型  207
8.2　图的存储结构  208
8.2.1　邻接矩阵  208
8.2.2　邻接表  212
8.2.3　邻接矩阵和邻接表的比较  215
8.2.4　十字链表  216
8.2.5　邻接多重表  217
8.2.6　索引表  218
8.3　图的遍历  218
8.3.1　深度优先搜索  219
8.3.2　广度优先搜索  220
8.4　图的连通性  221
8.4.1　无向图的连通性  221
8.4.2　有向图的连通性  222
8.4.3　生成树和生成森林  223
8.4.4　关节点和双连通分量  224
8.5　最小生成树  226
8.5.1　最小生成树的基本概念  226
8.5.2　Prim算法  227
8.5.3　Kruskal算法  230
8.6　最短路径  231
8.6.1　无权最短路径问题  232
8.6.2　从一个源点到其他各顶点的最短路径  233
8.6.3*　边上权值为任意值的单源最短路径问题  236
8.6.4*　负权最短路径问题  237
8.6.5　每对顶点之间的最短路径  239
8.7　DAG及其应用  240
8.7.1　DAG的概念  240
8.7.2　AOV网与拓扑排序  241
8.7.3　AOE图与关键路径  246
习题  250
实习题  253
第9章　查找  254
9.1　基本概念  254
9.2　静态查找表  255
9.2.1　静态查找表结构  255
9.2.2　顺序查找  256
9.2.3　有序表的二分查找  257
9.2.4　有序表的斐波那契查找和插值查找  260
9.2.5　分块查找  261
9.3　动态查找表  262
9.3.1　二叉排序树  263
9.3.2　平衡二叉树  267
9.3.3*　红黑树  280
9.3.4　B树  289
9.3.5　B+树  298
9.4　散列表查找  299
9.4.1　散列表与散列方法  299
9.4.2　常用的散列函数  300
9.4.3　处理冲突的方法  302
9.4.4　散列表的查找分析  306
9.4.5　散列表的操作  308
习题  310
实习题  311
第10章　排序  312
10.1　基本概念  312
10.2　插入排序  314
10.2.1　直接插入排序  314
10.2.2　二分插入排序  316
10.2.3　表插入排序  317
10.2.4　谢尔排序  319
10.3　交换排序  321
10.3.1　冒泡排序  321
10.3.2　快速排序  323
10.4　选择排序  326
10.4.1　线性选择排序  326
10.4.2　交换线性选择排序  328
10.4.3　树形选择排序  329
10.4.4　堆排序  331
10.4.5　用堆实现的优先队列  336
10.5　两路归并排序  337
10.6　分配排序  339
10.6.1　多键排序  339
10.6.2　桶排序  340
10.6.3　链式基数排序  340
10.7　其他排序方法  342
10.7.1　二叉树排序法  342
10.7.2　计数排序法  342
10.8　各种内排序方法的比较  344
10.9*　外排序  346
10.9.1　外排序的方法  346
10.9.2　自然归并排序法  347
10.9.3　k路归并法  347
10.9.4　多段归并法  349
习题  352
实习题  354
参考文献  355
附录　实验指导(图灵网站下载)