编辑推荐
内容全面:介绍了数据结构的基本理论与方法,包括线性表、栈和队列、串、数组和广义表、树和二叉树、图、查找、内部排序等,内容全面,循序渐进。
案例丰富:从应用出发,结合大量实际案例,对概念与算法进行详尽描述,加深学生对数据结构基本概念、原理和方法的理解。
插图易懂:在阐述基本概念、基本理论和算法原理时,配有丰富的插图,以直观的方式清晰解释复杂的算法程序,易于理解。
代码详尽:基于C++语言,提供了详尽的算法代码,且所有算法和实例程序都在VC++6.0环境下编译通过并运行正确。
习题完备:在每一章末尾都配有围绕知识点和难点的习题,且习题题型多样,难度适中,便于巩固理论知识。
应用突出:倡导从实用性和实践性角度学习数据结构,强化算法的实践与应用,解决学生中普遍存在的“只懂概念,不会编程”的问题。
内容简介
本书共分10章,主要包括第1章绪论,第2章线性表,第3章栈和队列,第4章串,第5章数组和广义表,第6章 树和二叉树,第7章图,第8章查找,第9章内部排序,第10章算法分析。其内容模块涵盖了课堂教学、习题课教学、实验教学、自学辅导、综合训练等。立体化教材的使用在提高教学效率、增强教学效果、加大教学信息量、培养学生的应用与实践能力。
作者简介
张 琨,于2003年博士毕业并参加工作,2013年5月获评为教授,2011年获评为博士生导师,现任计算机科学与工程学院软件工程系主任。本人的主要教学经历如下:数据结构、2005年至今、本科生、周学时4;软件方法学、2004年至2005年、研究生、周学时4;信息安全理论与技术、2004年至2005年、研究生、周学时4。
目录
第1章 绪论 1
1.1 数据结构的概念 1
1.1.1 数据结构的发展 1
1.1.2 什么是数据结构 2
1.1.3 数据结构的研究对象 4
1.1.4 数据结构相关概念及术语 6
1.2 数据类型和抽象数据类型 8
1.2.1 数据类型 8
1.2.2 抽象数据类型 9
1.3 算法和算法分析 11
1.3.1 算法特性 11
1.3.2 算法设计的要求 12
1.3.3 算法的性能分析与度量 12
习题一 17
第2章 线性表 21
2.1 线性表的基本概念 21
2.1.1 线性表的概念 21
2.1.2 线性表的抽象数据类型 22
2.2 线性表的顺序存储结构 25
2.2.1 线性表的顺序存储表示 26
2.2.2 顺序表的类定义和基本操作 26
2.2.3 顺序表的应用 33
2.2.4 顺序表的特点 35
2.3 线性表的链式存储结构 36
2.3.1 单链表 36
2.3.2 静态链表 43
2.3.3 循环链表 47
2.3.4 双向链表 48
2.4 线性表的应用:一元多项式的表示及
运算 50
2.4.1 一元多项式的表示 50
2.4.2 一元多项式的实现 51
习题二 56
第3章 栈和队列 59
3.1 栈的基本概念 59
3.1.1 栈的概念 59
3.1.2 栈的抽象数据类型 60
3.2 栈的顺序存储结构及实现 61
3.2.1 顺序栈的概念 61
3.2.2 顺序栈的类定义和基本操作 62
3.2.3 顺序栈的应用 63
3.3 栈的链式存储结构及实现 68
3.3.1 链栈的概念 69
3.3.2 链栈的类定义和基本操作 69
3.4 队列的基本概念 71
3.4.1 队列的概念 71
3.4.2 队列的抽象数据类型 71
3.5 队列的顺序存储 72
3.5.1 循环队列 73
3.5.2 循环队列的类定义和基本
操作 74
3.6 队列的链式存储 76
3.6.1 链队列的概念 76
3.6.2 链队列的类定义和基本操作 76
3.6.3 链队列的应用 78
习题三 83
第4章 串 86
4.1 串的基本概念 86
4.2 串的表示与实现 88
4.2.1 定长顺序存储表示 88
4.2.2 堆分配存储表示 91
4.2.3 链式存储表示 92
4.3 串的模式匹配 93
4.3.1 模式匹配方法BF 93
4.3.2 模式匹配方法KMP 94
习题四 96
第5章 数组和广义表 101
5.1 数组的基本概念 101
5.1.1 数组的概念 101
5.1.2 数组的抽象数据类型 102
5.2 数组的存储结构 103
5.3 矩阵的压缩存储 105
5.3.1 特殊矩阵的压缩存储 106
5.3.2 稀疏矩阵的压缩存储 107
5.4 广义表的基本概念 115
5.4.1 广义表的概念 116
5.4.2 广义表的抽象数据类型 116
5.4.3 广义表的存储结构 117
5.4.4 广义表的递归算法 119
习题五 120
第6章 树和二叉树 123
6.1 树 123
6.1.1 树的概念 123
6.1.2 基本术语 124
6.1.3 树的抽象数据类型 125
6.1.4 树的性质 127
6.1.5 树的存储结构 127
6.1.6 树的遍历 130
6.1.7 树的应用 131
6.2 森林 133
6.2.1 森林的存储结构 134
6.2.2 森林的遍历 135
6.3 二叉树 135
6.3.1 二叉树的概念 135
6.3.2 二叉树的性质 136
6.3.3 二叉树的抽象数据类型 140
6.3.4 二叉树的存储结构 142
6.3.5 遍历二叉树 145
6.3.6 线索二叉树 156
6.4 树、森林与二叉树的转换 163
6.4.1 树与二叉树的转换 163
6.4.2 森林与二叉树的转换 164
6.5 堆 166
6.6 哈夫曼树和哈夫曼编码 167
6.6.1 哈夫曼树的概念 167
6.6.2 哈夫曼树的构造 168
6.6.3 哈夫曼编码 170
习题六 173
第7章 图 176
7.1 图的基本概念 176
7.1.1 图的概念 176
7.1.2 图的基本术语 177
7.1.3 图的抽象数据类型 179
7.2 图的存储结构 181
7.2.1 图的顺序存储结构-邻接
矩阵 181
7.2.2 图的链式存储结构 184
7.3 图的遍历 189
7.3.1 深度优先搜索 189
7.3.2 广度优先搜索 190
7.3.3 连通分量和重连通分量 191
7.4 最小生成树 194
7.4.1 最小生成树的定义 194
7.4.2 最小生成树的构造算法 195
7.5 有向无环图及其应用 198
7.5.1 AOV网与拓扑排序 199
7.5.2 AOE网与关键路径 202
7.6 最短路径 206
7.6.1 单源最短路径 207
7.6.2 每对顶点间的最短路径 210
习题七 211
第8章 查找 214
8.1 查找的基本概念 214
8.2 静态查找表 216
8.2.1 顺序查找 216
8.2.2 有序表的查找 218
8.2.3 分块查找 219
8.2.4 二叉排序树 221
8.2.5 B_树 226
8.3 哈希表 232
8.3.1 哈希表的概念 232
8.3.2 哈希函数 233
8.3.3 处理冲突的方法 235
8.3.4 哈希查找算法及分析 237
习题八 239
第9章 内部排序 242
9.1 排序的基本概念 242
9.2 插入排序 244
9.2.1 直接插入排序 244
9.2.2 折半插入排序 246
9.2.3 表插入排序 248
9.2.4 希尔排序 251
9.3 交换排序 253
9.3.1 冒泡排序 253
9.3.2 快速排序 255
9.4 选择排序 258
9.4.1 简单选择排序 258
9.4.2 树形选择排序 261
9.4.3 堆排序 262
9.5 归并排序 265
9.6 基数排序 268
9.6.1 多关键字的排序 268
9.6.2 链式基数排序 269
9.7 各种内部排序方法的比较讨论 272
习题九 273
第10章 算法设计与分析 276
10.1 分治法 276
10.2 回溯法 278
10.3 贪心算法 283
10.4 动态规划法 285
10.5 分支限界法 288
习题十 294
附录A 词汇索引 296
前言/序言
数据结构与算法分析(C++语言版) 电子书 下载 mobi epub pdf txt