《据结构、算法与套用》是2015年出版的图书,作者是齐悦、夏克俭、姚琳。
基本介绍
- 书名:据结构、算法与套用
- 作者:齐悦、夏克俭、姚琳
- ISBN:9787302399766
- 定价:34.5元
- 出版时间:2015-4-23
- 装帧:平装
主要内容
本书系统地介绍了各种类型的数据结构、数据结构在计算机存储器中的表示以及相关的C语言描述算法。另外,对各类数据结构在实际中的套用做了较深入的介绍,包含示例分析及典型算法的C语言源程式。本书最后对算法设计的基础知识进行了讨论,拓展了知识面。每章后附有习题,便于读者进一步理解和巩固所学的知识。
本书可作为大专院校计算机专业或相关专业的教材,也可供从事计算机软体开发的工程技术人员参考。
目录
第1章绪论1
1.1数据结构研究的内容和方法1
1.1.1数据结构的含义1
1.1.2数据结构研究的内容2
1.1.3研究数据结构的方法6
1.2抽象数据类型的表示与实现7
1.3学习数据结构的目的8
1.3.1数据结构的发展简史及在计算机科学中的地位8
1.3.2学习数据结构的目的9
1.4算法和算法分析9
1.4.1算法的定义9
1.4.2算法的性质9
1.4.3算法的设计目标11
1.4.4算法效率的度量11
习题114
第2章线性表16
2.1线性表的定义及其基本操作16
2.1.1线性表的定义16
2.1.2线性表的逻辑结构和特徵16
2.1.3线性表的抽象数据类型表示17
2.2线性表的顺序存储结构19
2.2.1顺序表20
2.2.2顺序表上的基本操作20
2.2.3顺序存储结构的基本特点23
2.3线性表的链式存储结构24
2.3.1单鍊表24
2.3.2单鍊表中的基本操作262.3.3单向循环鍊表31
2.3.4双向鍊表32
2.3.5静态鍊表34
2.3.6链式存储结构的特点37
2.4线性表套用举例38
2.4.1Josephu问题38
2.4.2一元多项式的表示与相加41
本章小结45
习题245
第3章栈与伫列47
3.1栈47
3.1.1栈的定义及其操作47
3.1.2栈的顺序存储结构49
3.1.3栈的链式存储结构51
3.2栈套用举例52
3.2.1数制转换53
3.2.2行编辑处理54
3.2.3表达式求值56
3.3栈与递归函式61
3.3.1递归定义与递归函式61
3.3.2递归函式到非递归函式的转化64
3.4伫列66
3.4.1伫列的定义及其操作66
3.4.2伫列的顺序存储结构67
3.4.3伫列的链式存储结构70
3.5伫列套用实例72
3.5.1迷宫问题72
3.5.2离散事件模拟75
3.5.3有序事件模拟80
本章小结82
习题383
第4章串84
4.1串的定义及其操作84
4.1.1串的定义84
4.1.2串的抽象数据类型85
4.2串的存储结构87
4.2.1串的静态存储结构87
4.2.2串的动态存储结构93
4.3串模式匹配98
4.4串套用举例101
4.4.1文本编辑101
4.4.2建立词索引表104
本章小结106
习题4106
第5章数组和广义表107
5.1数组的定义及其操作107
5.1.1数组的定义107
5.1.2数组的抽象数据类型108
5.2数组的存储结构109
5.2.1数组的静态存储方式109
5.2.2数组的动态存储方式112
5.3矩阵的压缩存储113
5.3.1特殊矩阵的压缩存储113
5.3.2稀疏矩阵的压缩存储116
5.4广义表的定义及其操作120
5.4.1广义表的定义120
5.4.2广义表的抽象数据类型121
5.5广义表的存储结构122
5.5.1广义表的链式存储122
5.5.2广义表基本操作的递归算法124
本章小结127
习题5127
第6章树129
6.1树的基本概念129
6.1.1树的定义及基本操作130
6.1.2树的性质133
6.2二叉树135
6.2.1二叉树的定义及基本操作135
6.2.2二叉树的性质137
6.2.3二叉树的存储结构139
6.3二叉树的遍历142
6.3.1二叉树的遍历算法142
6.3.2二叉树遍历算法的非递归形式144
6.3.3二叉树遍历的套用148
6.4线索二叉树151
6.4.1线索二叉树的概念151
6.4.2建立线索二叉树153
6.4.3线索二叉树的遍历154
6.4.4线索二叉树的更新155
6.5树和森林156
6.5.1树的存储结构156
6.5.2森林和二叉树的转换160
6.5.3树和森林的遍历161
6.6二叉树套用举例162
6.6.1Huffman树及其构造算法162
6.6.2Huffman编码及解码166
本章小结169
习题6169
第7章图171
7.1图的定义及操作171
7.1.1图的定义171
7.1.2图的抽象数据类型175
7.2图的存储结构177
7.2.1数组表示法177
7.2.2邻接表表示法179
7.2.3十字鍊表表示法181
7.2.4邻接多重表表示法183
7.3图的遍历184
7.3.1深度优先搜寻算法184
7.3.2广度优先搜寻算法186
7.3.3求连通分量的算法187
7.4最小生成树188
7.4.1Prim算法189
7.4.2Kruskal算法191
7.5最短路径问题193
7.5.1Dijkstra算法193
7.5.2Floyd算法197
7.6图的套用实例199
7.6.1拓扑排序200
7.6.2关键路径204
本章小结208
习题7209
第8章查找211
8.1查找概述211
8.2顺序表的静态查找212
8.2.1顺序查找算法213
8.2.2折半查找算法214
8.2.3分块查找算法216
8.3树表的动态查找219
8.3.1二叉排序树和平衡二叉排序树219
8.3.2B-树232
8.3.3B+树和B树240
8.4Hash表的查找241
8.4.1Hash表的含义241
8.4.2Hash函式的构造方法243
8.4.3处理冲突的方法246
8.4.4Hash表的查找及分析248
本章小结251
习题8252
第9章排序253
9.1排序概述253
9.2插入排序255
9.2.1直接插入排序255
9.2.2折半插入排序258
9.2.3鍊表插入排序259
9.2.4Shell排序261
9.3交换排序262
9.3.1起泡排序262
9.3.2快速排序264
9.4选择排序266
9.4.1直接选择排序267
9.4.2堆选择排序268
9.5归併排序274
9.6基数排序276
9.7各种内排序方法的比较讨论280
9.8外排序概述281
习题9283
第10章算法设计基础284
10.1穷举法284
10.1.1算法概述284
10.1.2穷举法解决背包问题285
10.2贪心法287
10.2.1算法概述287
10.2.2贪心法解决背包问题288
10.3分治法289
10.3.1分治策略289
10.3.2套用实例: 大整数乘法291
10.4动态规划法292
10.4.1算法概述292
10.4.2动态规划法解决背包问题293
10.5回溯法294
10.5.1算法概述294
10.5.2回溯法解决背包问题295
本章小结296
习题10296
参考文献298