本书系统地介绍了线性表、栈、队列、串、数组、广义表、树、二叉树、图等常用数据结构以及查找、排序、索引等算法设计技术,给出了较多的数据结构应用实例及其算法在计算机中的存储和实现,分析了复杂度。书中各种算法采用C++语言描述,既适合在MSVC下使用,也适合在MSVC++.NET中使用。全书注重程序设计风格,可读性和实用性强。本书内容丰富,层次清晰,讲解深入浅出,可作为计算机及相关专业本、专科数据结构课程的教材,也可供从事计算机软件开发和应用的工程技术人员阅读或参考。
更多科学出版社服务,请扫码获取。
目录
前言
第1章 绪论1
1.1引言1
1.2数据结构中的基本概念和术语4
1.3算法和算法描述12
1.3.1算法的概念12
1.3.2算法的描述方法13
1.4算法的评价方法16
1.4.1评价算法的一般原则16
1.4.2算法的复杂度17
1.5C++中的typedef、模板与异常处理*24
本章小结和学习要点33
习题134
思考题136
上机题136
第2章 线性表37
2.1线性表及其基本操作37
2.1.1线性表的逻辑结构定义37
2.1.2线性表的抽象数据类型定义38
2.2线性表的顺序存储结构——顺序表40
2.2.1顺序表的基本表示40
2.2.2顺序表模板类表示下的基本操作44
2.2.3顺序表表示线性表下的其他操作49
2.2.4间接寻址方式及其他方式实现的顺序表56
2.3线性表的链式存储结构56
2.3.1单链表56
2.3.2循环单链表67
2.3.3双链表及循环双链表68
2.3.4静态链表71
2.3.5间接寻址方式实现的单链表*73
2.4线性表的应用73
2.4.1一元多项式的表示及相加73
2.4.2算法举例77
2.5顺序表和单链表的比较82
2.5.1时间性能比较82
2.5.2空间性能比较82
本章内容小结和学习要点83
习题284
思考题288
上机题288
第3章 栈和队列89
3.1栈89
3.1.1栈的逻辑结构89
3.1.2栈的顺序存储结构——顺序栈91
3.1.3栈的链式存储结构96
3.2队列99
3.2.1队列的逻辑结构99
3.2.2队列的链式存储结构102
3.2.3队列的顺序存储结构106
3.3栈和队列的综合应用115
3.3.1算术表达式求值115
3.3.2用顺序栈作辅助存储结构求迷宫的一条路径解124
本章内容小结和学习要点126
习题3126
思考题3128
上机题3129
第4章 字符串130
4.1串及其运算130
4.2串的顺序存储结构134
4.3串的链式存储结构137
4.4串的模式匹配算法138
4.5串的应用149
4.5.1大整数加法149
4.5.2名字特征数152
本章小结和学习要点153
习题4153
思考题4154
上机题4154
第5章 数组和广义表155
5.1数组的寻址和运算155
5.2矩阵的压缩存储159
5.2.1特殊矩阵160
5.2.2稀疏矩阵163
5.3广义表*170
5.3.1广义表的概念170
5.3.2广义表的存储结构172
5.3.3广义表的操作174
本章小结和学习要点178
习题5178
思考题5180
上机题5180
第6章 树和二叉树182
6.1树的基本定义182
6.2二叉树186
6.2.1二叉树的定义和基本运算187
6.2.2二叉树的性质189
6.2.3二叉树的存储结构192
6.3二叉树的建立和遍历197
6.3.1遍历二叉树197
6.3.2建立和释放一棵二叉树的二叉链表202
6.3.3二叉链表其他函数和主函数204
6.3.4二叉树的三种遍历的非递归算法206
6.3.5二叉树的其他算法例210
6.4线索二叉树213
6.5树和森林219
6.6哈夫曼树及其应用228
本章小结和学习要点237
习题6237
思考题6242
上机题6242
第7章 图的数据结构243
7.1图的定义、基本术语和操作243
7.2图的存储结构248
7.2.1邻接矩阵248
7.2.2边数组252
7.2.3邻接表252
7.2.4图的十字链表表示258
7.2.5邻接多重表260
7.3图的遍历262
7.3.1深度优先搜索遍历图262
7.3.2广度优先搜索遍历图266
7.3.3图的遍历268
7.4图的连通性和生成树270
7.4.1图的连通性和连通分量270
7.4.2生成树和生成森林272
7.4.3最小生成树274
7.5最短路径问题283
7.5.1求某个源点到其余各顶点的最短路径283
7.5.2求带权图中每一对顶点之间的最短路径288
7.6拓扑排序291
7.7求关键路径298
7.8图的遍历算法的应用305
7.8.1求过给定点v长度大于或等于k的简单有向回路305
7.8.2地图四色问题306
本章小结和学习要点308
习题7308
思考题7313
上机题7313
第8章 排序315
8.1排序的基本概念和术语315
8.2插入排序318
8.2.1直接插入排序318
8.2.2谢尔排序322
8.3选择排序324
8.3.1简单选择排序325
8.3.2改进的简单选择排序326
8.3.3堆排序327
8.4交换排序333
8.4.1冒泡排序333
8.4.2快速排序335
8.5归并排序340
8.6基数排序342
8.7各种内部排序算法的比较346
本章小结和学习要点349
习题8350
思考题8355
上机题8355
第9章 查找356
9.1查找的基本概念和术语356
9.2以顺序表为基础的查找358
9.2.1顺序表的顺序查找358
9.2.2有序表的二分法查找361
9.2.3静态树表的查找366
9.2.4分块查找370
9.3树形结构的查找373
9.3.1二叉排序树373
9.3.2平衡二叉树383
9.4散列表的查找391
9.4.1散列技术中的主要概念391
9.4.2散列函数的构造方法392
9.4.3冲突的处理方法396
9.4.4散列表上的查找算法400
9.4.5散列表查找的时间复杂度分析400
本章小结和学习要点405
习题9405
思考题9408
上机题9408
第10章 索引技术409
10.1索引的基本概念409
10.2线性索引410
10.2.1稠密索引410
10.2.2稀疏索引411
10.2.3多重表413
10.2.4倒排表413
10.3树形索引415
10.3.1B-树415
10.3.2B+树424
10.3.3键树425
本章内容小结和学习要点432
习题10432
思考题10434
上机题10434
主要参考文献435
附录上机实验报告格式437
索引439