数据结构(C++版)(第3版)
¥42.00定价
作者: 叶核亚
出版时间:2014-12
出版社:电子工业出版社
- 电子工业出版社
- 9787121219856
- 1-2
- 119378
- 47151320-0
- 平装
- 16开
- 2014-12
- 525
- 328
- 工学
- 软件工程
- TP311.12
- 专业基础课
内容简介
叶核亚编著的《数据结构(C++版第3版)》全面系统地介绍数据结构的基础理论和算法设计方法,包括线性表、树、图等数据结构以及查找和排序算法。内容涉及的广度和深度符合计算机专业本科的基本要求,体现了本科教学的培养目标。
《数据结构(C++版第3版)》采用C++语言以面向对象方法描述数据结构和算法。本书理论叙述精练,结构安排合理,重点是数据结构设计和算法设计,通过降低理论难度和抽象性、加强实践环节等措施,力求增强学生的理解能力和应用能力。
本书有配套的教学资料包,包括电子课件、源代码及习题解答等。
本书可作为普通高等学校计算机及相近专业本科数据结构课程的教材,也可作为从事计算机软件开发和工程应用人员的参考书。
《数据结构(C++版第3版)》采用C++语言以面向对象方法描述数据结构和算法。本书理论叙述精练,结构安排合理,重点是数据结构设计和算法设计,通过降低理论难度和抽象性、加强实践环节等措施,力求增强学生的理解能力和应用能力。
本书有配套的教学资料包,包括电子课件、源代码及习题解答等。
本书可作为普通高等学校计算机及相近专业本科数据结构课程的教材,也可作为从事计算机软件开发和工程应用人员的参考书。
目录
第1章 绪论/1
1.1 数据结构的基本概念/1
1.1.1 为什么要学习数据结构/1
1.1.2 什么是数据结构/2
1.1.3 数据类型与抽象数据类型/5
1.2 算法/7
1.2.1 什么是算法/7
1.2.2 算法分析/9
1.2.3 算法设计/12
1.3 Visual C++集成开发环境/14
1.3.1 Visual C++ 2008集成开发环境/14
1.3.2 新建、编辑、编译和运行C++程序/16
1.3.3 程序调试技术/20
习题1/23
实验1 算法设计与分析/24
第2章 线性表/25
2.1 线性表抽象数据类型/25
2.2 线性表的顺序存储和实现/26
2.2.1 线性表的顺序存储结构/26
2.2.2 顺序表/28
2.2.3 排序顺序表/41
2.3 线性表的链式存储和实现/49
2.3.1 线性表的链式存储结构/49
2.3.2 单链表/50
2.3.3 双链表/63
2.4 线性表的应用:多项式的表示及运算/68
2.4.1 一元多项式的表示及运算/68
2.4.2 二元多项式的表示及运算/70
习题2/71
实验2 线性表的基本操作/71
第3章 串/75
3.1 串抽象数据类型/75
3.2 串的存储和实现/76
3.2.1 串的存储结构/76
3.2.2 使用char*表示字符串存在错误/77
3.2.3 字符串类/79
3.3 串的模式匹配/83
3.3.1 Brute-Force算法/84
3.3.2 KMP算法/88
习题3/95
实验3 串的基本操作及模式匹配算法/95
第4章 栈和队列/98
4.1 栈/98
4.1.1 栈抽象数据类型/98
4.1.2 顺序栈/99
4.1.3 链式栈/100
4.1.4 栈的应用/101
4.2 队列/107
4.2.1 队列抽象数据类型/107
4.2.2 顺序队列/107
4.2.3 链式队列/110
4.2.4 队列的应用/112
4.3 优先队列/113
4.4 递归/116
习题4/121
实验4 栈和队列以及递归算法/122
第5章 数组和广义表/125
5.1 数组/125
5.2 特殊矩阵的压缩存储/131
5.2.1 三角矩阵、对称矩阵和对角矩阵的压缩存储/131
5.2.2 稀疏矩阵的压缩存储/133
5.3 广义表/139
习题5/143
实验5 特殊矩阵和广义表的存储和运算/144
第6章 树和二叉树/146
6.1 树及其抽象数据类型/146
6.1.1 树定义/146
6.1.2 树的术语/147
6.1.3 树的表示法/148
6.1.4 树抽象数据类型/148
6.2 二叉树/149
6.2.1 二叉树定义/149
6.2.2 二叉树性质/150
6.2.3 二叉树的遍历及构造规则/151
6.2.4 二叉树的存储结构/154
6.2.5 二叉树的二叉链表实现/156
6.3 线索二叉树/168
6.3.1 线索二叉树定义/168
6.3.2 中序线索二叉树/170
6.4 Huffman树/176
6.4.1 Huffman编码/176
6.4.2 Huffman树及其构造算法/177
6.5 树的表示和实现/184
6.5.1 树的遍历规则/184
6.5.2 树的存储结构/184
6.5.3 树的父母孩子兄弟链表实现/185
习题6/188
实验6 树和二叉树的基本操作/190
第7章 图/193
7.1 图及其抽象数据类型/193
7.1.1 图的基本概念/193
7.1.2 图抽象数据类型/197
7.2 图的表示和实现/197
7.2.1 图的邻接矩阵表示和实现/197
7.2.2 图的邻接表表示和实现/205
7.2.3 图的邻接多重表表示/211
7.3 图的遍历/212
7.3.1 图的深度优先搜索遍历/213
7.3.2 图的广度优先搜索遍历/216
7.4 最小生成树/218
7.4.1 生成树/218
7.4.2 最小生成树的构造算法/220
7.5 最短路径/224
7.5.1 单源最短路径/224
7.5.2 每对顶点间的最短路径/229
习题7/233
实验7 图的表示和操作/234
第8章 查找/235
8.1 查找的基本概念/235
8.2 基于排序顺序表的二分法查找/237
8.3 基于索引表的分块查找/239
8.4 散列/244
8.5 二叉排序树和平衡二叉树/252
8.5.1 二叉排序树/252
8.5.2 平衡二叉树/257
习题8/261
实验8 查找算法/262
第9章 排序/263
9.1 排序的基本概念/263
9.2 插入排序/264
9.2.1 直接插入排序和折半插入排序/264
9.2.2 希尔排序/266
9.3 交换排序/268
9.3.1 冒泡排序/268
9.3.2 快速排序/269
9.4 选择排序/272
9.4.1 直接选择排序/272
9.4.2 堆排序/273
9.5 归并排序/277
9.6 单/双链表的排序算法/279
习题9/283
实验9 排序算法设计及分析/283
第10章 综合应用设计/285
10.1 算法设计策略/285
10.1.1 分治法/285
10.1.2 动态规划法/287
10.1.3 贪心法/289
10.1.4 回溯法/300
10.2 课程设计的目的、要求和选题/311
附录A ASCII码表(前128个)/316
附录B C++运算符及其优先级/317
参考文献/318
1.1 数据结构的基本概念/1
1.1.1 为什么要学习数据结构/1
1.1.2 什么是数据结构/2
1.1.3 数据类型与抽象数据类型/5
1.2 算法/7
1.2.1 什么是算法/7
1.2.2 算法分析/9
1.2.3 算法设计/12
1.3 Visual C++集成开发环境/14
1.3.1 Visual C++ 2008集成开发环境/14
1.3.2 新建、编辑、编译和运行C++程序/16
1.3.3 程序调试技术/20
习题1/23
实验1 算法设计与分析/24
第2章 线性表/25
2.1 线性表抽象数据类型/25
2.2 线性表的顺序存储和实现/26
2.2.1 线性表的顺序存储结构/26
2.2.2 顺序表/28
2.2.3 排序顺序表/41
2.3 线性表的链式存储和实现/49
2.3.1 线性表的链式存储结构/49
2.3.2 单链表/50
2.3.3 双链表/63
2.4 线性表的应用:多项式的表示及运算/68
2.4.1 一元多项式的表示及运算/68
2.4.2 二元多项式的表示及运算/70
习题2/71
实验2 线性表的基本操作/71
第3章 串/75
3.1 串抽象数据类型/75
3.2 串的存储和实现/76
3.2.1 串的存储结构/76
3.2.2 使用char*表示字符串存在错误/77
3.2.3 字符串类/79
3.3 串的模式匹配/83
3.3.1 Brute-Force算法/84
3.3.2 KMP算法/88
习题3/95
实验3 串的基本操作及模式匹配算法/95
第4章 栈和队列/98
4.1 栈/98
4.1.1 栈抽象数据类型/98
4.1.2 顺序栈/99
4.1.3 链式栈/100
4.1.4 栈的应用/101
4.2 队列/107
4.2.1 队列抽象数据类型/107
4.2.2 顺序队列/107
4.2.3 链式队列/110
4.2.4 队列的应用/112
4.3 优先队列/113
4.4 递归/116
习题4/121
实验4 栈和队列以及递归算法/122
第5章 数组和广义表/125
5.1 数组/125
5.2 特殊矩阵的压缩存储/131
5.2.1 三角矩阵、对称矩阵和对角矩阵的压缩存储/131
5.2.2 稀疏矩阵的压缩存储/133
5.3 广义表/139
习题5/143
实验5 特殊矩阵和广义表的存储和运算/144
第6章 树和二叉树/146
6.1 树及其抽象数据类型/146
6.1.1 树定义/146
6.1.2 树的术语/147
6.1.3 树的表示法/148
6.1.4 树抽象数据类型/148
6.2 二叉树/149
6.2.1 二叉树定义/149
6.2.2 二叉树性质/150
6.2.3 二叉树的遍历及构造规则/151
6.2.4 二叉树的存储结构/154
6.2.5 二叉树的二叉链表实现/156
6.3 线索二叉树/168
6.3.1 线索二叉树定义/168
6.3.2 中序线索二叉树/170
6.4 Huffman树/176
6.4.1 Huffman编码/176
6.4.2 Huffman树及其构造算法/177
6.5 树的表示和实现/184
6.5.1 树的遍历规则/184
6.5.2 树的存储结构/184
6.5.3 树的父母孩子兄弟链表实现/185
习题6/188
实验6 树和二叉树的基本操作/190
第7章 图/193
7.1 图及其抽象数据类型/193
7.1.1 图的基本概念/193
7.1.2 图抽象数据类型/197
7.2 图的表示和实现/197
7.2.1 图的邻接矩阵表示和实现/197
7.2.2 图的邻接表表示和实现/205
7.2.3 图的邻接多重表表示/211
7.3 图的遍历/212
7.3.1 图的深度优先搜索遍历/213
7.3.2 图的广度优先搜索遍历/216
7.4 最小生成树/218
7.4.1 生成树/218
7.4.2 最小生成树的构造算法/220
7.5 最短路径/224
7.5.1 单源最短路径/224
7.5.2 每对顶点间的最短路径/229
习题7/233
实验7 图的表示和操作/234
第8章 查找/235
8.1 查找的基本概念/235
8.2 基于排序顺序表的二分法查找/237
8.3 基于索引表的分块查找/239
8.4 散列/244
8.5 二叉排序树和平衡二叉树/252
8.5.1 二叉排序树/252
8.5.2 平衡二叉树/257
习题8/261
实验8 查找算法/262
第9章 排序/263
9.1 排序的基本概念/263
9.2 插入排序/264
9.2.1 直接插入排序和折半插入排序/264
9.2.2 希尔排序/266
9.3 交换排序/268
9.3.1 冒泡排序/268
9.3.2 快速排序/269
9.4 选择排序/272
9.4.1 直接选择排序/272
9.4.2 堆排序/273
9.5 归并排序/277
9.6 单/双链表的排序算法/279
习题9/283
实验9 排序算法设计及分析/283
第10章 综合应用设计/285
10.1 算法设计策略/285
10.1.1 分治法/285
10.1.2 动态规划法/287
10.1.3 贪心法/289
10.1.4 回溯法/300
10.2 课程设计的目的、要求和选题/311
附录A ASCII码表(前128个)/316
附录B C++运算符及其优先级/317
参考文献/318