书籍详情
数据结构案例教程(C语言版)
作者:程海英
出版社:电子工业出版社
出版时间:2020-01-01
ISBN:9787121381010
定价:¥48.00
购买这本书可以去
内容简介
数据结构是计算机和信息技术类等相关专业的一门重要的专业基础课程,数据结构及其处理算法是设计与实现系统软件和大型应用软件的重要基础,结合数据结构课程的现状和发展趋势,本教材具有难度适中、结构合理、应用性强的特点。
作者简介
自参加工作以来,一直从事教学及科研工作,担任电话机、手机、电视机、VCD、计算机网络设计、计算机网站建设等专业课教学工作。在教学实践中形成了“激趣、启思、求活、务实”的教学风格和“注重启迪、鼓励创新”的教学特点,教学效果优秀,受到学生欢迎。
目录
第1 章 数据结构基础 .................................................................................... 1
1.1 数据结构的基本概念 .................................................................................................... 2
1.1.1 数据结构的研究内容 ......................................................................................... 2
1.1.2 基本概念和术语 ................................................................................................. 5
1.1.3 数据结构课程的内容 ......................................................................................... 8
1.2 数据类型和抽象数据类型 ............................................................................................ 9
1.2.1 数据类型 ............................................................................................................. 9
1.2.2 抽象数据类型 ..................................................................................................... 9
1.3 算法和算法分析 .......................................................................................................... 10
1.3.1 算法特性 ........................................................................................................... 11
1.3.2 算法描述 ........................................................................................................... 12
1.3.3 算法性能分析 ................................................................................................... 12
1.4 本章小结 ...................................................................................................................... 15
习题 ....................................................................................................................................... 16
编程实例 ............................................................................................................................... 18
第2 章 线性表 ............................................................................................. 19
2.1 线性表的定义 .............................................................................................................. 20
2.1.1 线性表的逻辑结构 ........................................................................................... 20
2.1.2 线性表的抽象数据类型 ................................................................................... 20
2.2 线性表的顺序存储及实现 .......................................................................................... 22
2.2.1 顺序表 ............................................................................................................... 22
2.2.2 顺序表的基本运算 ........................................................................................... 23
2.3 线性表的链式存储及实现 .......................................................................................... 28
vi | 数据结构案例教程(C 语言版)
2.3.1 单链表 ............................................................................................................... 29
2.3.2 单链表的基本运算 ........................................................................................... 30
2.3.3 循环链表 ........................................................................................................... 36
2.3.4 双向链表 ........................................................................................................... 37
2.3.5 静态链表 ........................................................................................................... 39
2.3.6 单链表应用举例 ............................................................................................... 40
2.4 顺序表与链表的比较 .................................................................................................. 43
2.5 本章小结 ...................................................................................................................... 44
习题 ....................................................................................................................................... 44
编程实例 ............................................................................................................................... 46
第3 章 栈和队列 ......................................................................................... 48
3.1 栈 .................................................................................................................................. 49
3.1.1 栈的定义 ........................................................................................................... 49
3.1.2 栈的表示和实现 ............................................................................................... 50
3.2 栈的应用 ...................................................................................................................... 55
3.2.1 数制转换问题 ................................................................................................... 56
3.2.2 括号匹配检验 ................................................................................................... 57
3.2.3 表达式求值 ....................................................................................................... 58
3.2.4 栈与递归 ........................................................................................................... 61
3.3 队列 .............................................................................................................................. 64
3.3.1 队列的定义 ....................................................................................................... 64
3.3.2 队列的表示和实现 ........................................................................................... 65
3.4 队列的应用 .................................................................................................................. 71
3.5 本章小结 ...................................................................................................................... 73
习题 ....................................................................................................................................... 74
编程实例 ............................................................................................................................... 75
第4 章 串 .................................................................................................... 79
4.1 串的定义和基本运算 .................................................................................................. 80
4.1.1 串的定义 ........................................................................................................... 80
4.1.2 串的基本操作 ................................................................................................... 81
4.2 串的存储结构 .............................................................................................................. 82
4.2.1 定长顺序存储 ................................................................................................... 82
4.2.2 堆存储 ............................................................................................................... 83
目 录 | vii
4.2.3 链式存储 ........................................................................................................... 85
4.3 串的运算实现 .............................................................................................................. 86
4.4 串的模式匹配 .............................................................................................................. 90
4.4.1 BF 算法 ............................................................................................................. 90
4.4.2 KMP 算法 ......................................................................................................... 92
4.5 本章小结 ...................................................................................................................... 95
习题 ....................................................................................................................................... 96
编程实例 ............................................................................................................................... 99
第5 章 数组和广义表 ................................................................................ 103
5.1 数组的定义及存储 .................................................................................................... 104
5.1.1 数组的定义 ..................................................................................................... 104
5.1.2 数组的基本操作 ............................................................................................. 105
5.1.3 数组的顺序存储 ............................................................................................. 105
5.2 特殊矩阵的压缩存储 ................................................................................................ 107
5.2.1 对称矩阵 ......................................................................................................... 108
5.2.2 三角矩阵 ......................................................................................................... 109
5.2.3 对角矩阵 ......................................................................................................... 110
5.3 稀疏矩阵 ..................................................................................................................... 111
5.3.1 稀疏矩阵的三元组表存储 .............................................................................. 111
5.3.2 稀疏矩阵的十字链表存储 ............................................................................. 115
5.4 广义表 ........................................................................................................................ 117
5.4.1 广义表的定义 ................................................................................................. 117
5.4.2 广义表的存储结构 ......................................................................................... 119
5.4.3 广义表的基本操作实现 ................................................................................. 121
5.5 本章小结 .................................................................................................................... 122
习题 ..................................................................................................................................... 123
编程实例 ............................................................................................................................. 124
第6 章 树和二叉树 .................................................................................... 127
6.1 树的定义与基本术语 ................................................................................................ 128
6.1.1 树的定义 ......................................................................................................... 128
6.1.2 树的基本术语 ................................................................................................. 131
6.2 二叉树 ........................................................................................................................ 131
6.2.1 二叉树的定义 ................................................................................................. 131
viii | 数据结构案例教程(C 语言版)
6.2.2 二叉树的性质 ................................................................................................. 134
6.2.3 二叉树的存储实现 ......................................................................................... 136
6.3 遍历二叉树 ................................................................................................................ 139
6.3.1 遍历二叉树的递归实现 ................................................................................. 139
6.3.2 遍历二叉树的非递归实现 ............................................................................. 141
6.3.3 遍历算法的应用 ............................................................................................. 145
6.4 线索二叉树 ................................................................................................................ 148
6.4.1 线索二叉树的基本概念 ................................................................................. 148
6.4.2 线索二叉树的运算实现 ................................................................................. 150
6.5 树和森林 .................................................................................................................... 153
6.5.1 树的存储结构 ................................................................................................. 153
6.5.2 树、森林与二叉树的转换 ............................................................................. 156
6.5.3 树和森林的遍历 ............................................................................................. 158
6.6 哈夫曼树及其应用 .................................................................................................... 159
6.6.1 哈夫曼树的基本概念 ..................................................................................... 159
6.6.2 构造哈夫曼树 ................................................................................................. 161
6.6.3 哈夫曼编码 ..................................................................................................... 163
6.7 本章小结 .................................................................................................................... 165
习题 ..................................................................................................................................... 166
编程实例 ............................................................................................................................. 168
第7 章 图 .................................................................................................. 172
7.1 图的定义与基本术语 ................................................................................................ 173
7.1.1 图的定义 ......................................................................................................... 173
7.1.2 基本术语 ......................................................................................................... 175
7.2 图的存储结构 ............................................................................................................ 177
7.2.1 邻接矩阵 ......................................................................................................... 177
7.2.2 邻接链表 ......................................................................................................... 179
7.2.3 十字链表 ......................................................................................................... 182
7.2.4 邻接多重表 ..................................................................................................... 183
7.3 图的遍历 .................................................................................................................... 184
7.3.1 深度优先搜索 ................................................................................................. 185
7.3.2 广度优先搜索 ................................................................................................. 187
7.4 图的应用 .................................................................................................................... 189
7.4.1 最小生成树 ..................................................................................................... 189
目 录 | ix
7.4.2 最短路径问题 ................................................................................................. 195
7.4.3 AOV 网与拓扑排序 ....................................................................................... 200
7.4.4 AOE 网与关键路径 ........................................................................................ 203
7.5 本章小结 .................................................................................................................... 208
习题 ..................................................................................................................................... 209
编程实例 ............................................................................................................................. 211
第8 章 查找 ............................................................................................... 216
8.1 查找的基本概念 ........................................................................................................ 217
8.2 线性表的查找 ............................................................................................................ 218
8.2.1 顺序查找 ......................................................................................................... 218
8.2.2 折半查找 ......................................................................................................... 219
8.2.3 分块查找 ......................................................................................................... 222
8.3 树表的查找 ................................................................................................................ 223
8.3.1 二叉排序树 ..................................................................................................... 223
8.3.2 平衡二叉树 ..................................................................................................... 229
8.3.3 B 树.................................................................................................................. 234
8.4 散列表的查找 ............................................................................................................ 241
8.4.1 散列表的基本概念 ......................................................................................... 241
8.4.2 散列函数的构造方法 ..................................................................................... 242
8.4.3 处理冲突的方法 ............................................................................................. 244
8.4.4 散列表的查找 ................................................................................................. 247
8.5 本章小结 .................................................................................................................... 248
习题 ..................................................................................................................................... 249
编程实例 ............................................................................................................................. 251
第9 章 排序 ............................................................................................... 254
9.1 排序的基本概念 ........................................................................................................ 255
9.1.1 什么是排序 ..................................................................................................... 255
9.1.2 排序的实现 ..................................................................................................... 256
9.2 插入排序 .................................................................................................................... 257
9.2.1 直接插入排序 ................................................................................................. 257
9.2.2 折半插入排序 ................................................................................................. 259
9.2.3 希尔排序 ......................................................................................................... 260
9.3 交换排序 .................................................................................................................... 261
x | 数据结构案例教程(C 语言版)
9.3.1 冒泡排序 ......................................................................................................... 261
9.3.2 快速排序 ......................................................................................................... 263
9.4 选择排序 .................................................................................................................... 266
9.4.1 简单选择排序 ................................................................................................. 266
9.4.2 堆排序 ............................................................................................................. 268
9.5 归并排序 .................................................................................................................... 273
9.6 基数排序 .................................................................................................................... 275
9.6.1 多关键字排序 ................................................................................................. 275
9.6.2 链式基数排序 ................................................................................................. 275
9.7 本章小结 .................................................................................................................... 279
习题 ..................................................................................................................................... 280
编程实例 ............................................................................................................................. 282
1.1 数据结构的基本概念 .................................................................................................... 2
1.1.1 数据结构的研究内容 ......................................................................................... 2
1.1.2 基本概念和术语 ................................................................................................. 5
1.1.3 数据结构课程的内容 ......................................................................................... 8
1.2 数据类型和抽象数据类型 ............................................................................................ 9
1.2.1 数据类型 ............................................................................................................. 9
1.2.2 抽象数据类型 ..................................................................................................... 9
1.3 算法和算法分析 .......................................................................................................... 10
1.3.1 算法特性 ........................................................................................................... 11
1.3.2 算法描述 ........................................................................................................... 12
1.3.3 算法性能分析 ................................................................................................... 12
1.4 本章小结 ...................................................................................................................... 15
习题 ....................................................................................................................................... 16
编程实例 ............................................................................................................................... 18
第2 章 线性表 ............................................................................................. 19
2.1 线性表的定义 .............................................................................................................. 20
2.1.1 线性表的逻辑结构 ........................................................................................... 20
2.1.2 线性表的抽象数据类型 ................................................................................... 20
2.2 线性表的顺序存储及实现 .......................................................................................... 22
2.2.1 顺序表 ............................................................................................................... 22
2.2.2 顺序表的基本运算 ........................................................................................... 23
2.3 线性表的链式存储及实现 .......................................................................................... 28
vi | 数据结构案例教程(C 语言版)
2.3.1 单链表 ............................................................................................................... 29
2.3.2 单链表的基本运算 ........................................................................................... 30
2.3.3 循环链表 ........................................................................................................... 36
2.3.4 双向链表 ........................................................................................................... 37
2.3.5 静态链表 ........................................................................................................... 39
2.3.6 单链表应用举例 ............................................................................................... 40
2.4 顺序表与链表的比较 .................................................................................................. 43
2.5 本章小结 ...................................................................................................................... 44
习题 ....................................................................................................................................... 44
编程实例 ............................................................................................................................... 46
第3 章 栈和队列 ......................................................................................... 48
3.1 栈 .................................................................................................................................. 49
3.1.1 栈的定义 ........................................................................................................... 49
3.1.2 栈的表示和实现 ............................................................................................... 50
3.2 栈的应用 ...................................................................................................................... 55
3.2.1 数制转换问题 ................................................................................................... 56
3.2.2 括号匹配检验 ................................................................................................... 57
3.2.3 表达式求值 ....................................................................................................... 58
3.2.4 栈与递归 ........................................................................................................... 61
3.3 队列 .............................................................................................................................. 64
3.3.1 队列的定义 ....................................................................................................... 64
3.3.2 队列的表示和实现 ........................................................................................... 65
3.4 队列的应用 .................................................................................................................. 71
3.5 本章小结 ...................................................................................................................... 73
习题 ....................................................................................................................................... 74
编程实例 ............................................................................................................................... 75
第4 章 串 .................................................................................................... 79
4.1 串的定义和基本运算 .................................................................................................. 80
4.1.1 串的定义 ........................................................................................................... 80
4.1.2 串的基本操作 ................................................................................................... 81
4.2 串的存储结构 .............................................................................................................. 82
4.2.1 定长顺序存储 ................................................................................................... 82
4.2.2 堆存储 ............................................................................................................... 83
目 录 | vii
4.2.3 链式存储 ........................................................................................................... 85
4.3 串的运算实现 .............................................................................................................. 86
4.4 串的模式匹配 .............................................................................................................. 90
4.4.1 BF 算法 ............................................................................................................. 90
4.4.2 KMP 算法 ......................................................................................................... 92
4.5 本章小结 ...................................................................................................................... 95
习题 ....................................................................................................................................... 96
编程实例 ............................................................................................................................... 99
第5 章 数组和广义表 ................................................................................ 103
5.1 数组的定义及存储 .................................................................................................... 104
5.1.1 数组的定义 ..................................................................................................... 104
5.1.2 数组的基本操作 ............................................................................................. 105
5.1.3 数组的顺序存储 ............................................................................................. 105
5.2 特殊矩阵的压缩存储 ................................................................................................ 107
5.2.1 对称矩阵 ......................................................................................................... 108
5.2.2 三角矩阵 ......................................................................................................... 109
5.2.3 对角矩阵 ......................................................................................................... 110
5.3 稀疏矩阵 ..................................................................................................................... 111
5.3.1 稀疏矩阵的三元组表存储 .............................................................................. 111
5.3.2 稀疏矩阵的十字链表存储 ............................................................................. 115
5.4 广义表 ........................................................................................................................ 117
5.4.1 广义表的定义 ................................................................................................. 117
5.4.2 广义表的存储结构 ......................................................................................... 119
5.4.3 广义表的基本操作实现 ................................................................................. 121
5.5 本章小结 .................................................................................................................... 122
习题 ..................................................................................................................................... 123
编程实例 ............................................................................................................................. 124
第6 章 树和二叉树 .................................................................................... 127
6.1 树的定义与基本术语 ................................................................................................ 128
6.1.1 树的定义 ......................................................................................................... 128
6.1.2 树的基本术语 ................................................................................................. 131
6.2 二叉树 ........................................................................................................................ 131
6.2.1 二叉树的定义 ................................................................................................. 131
viii | 数据结构案例教程(C 语言版)
6.2.2 二叉树的性质 ................................................................................................. 134
6.2.3 二叉树的存储实现 ......................................................................................... 136
6.3 遍历二叉树 ................................................................................................................ 139
6.3.1 遍历二叉树的递归实现 ................................................................................. 139
6.3.2 遍历二叉树的非递归实现 ............................................................................. 141
6.3.3 遍历算法的应用 ............................................................................................. 145
6.4 线索二叉树 ................................................................................................................ 148
6.4.1 线索二叉树的基本概念 ................................................................................. 148
6.4.2 线索二叉树的运算实现 ................................................................................. 150
6.5 树和森林 .................................................................................................................... 153
6.5.1 树的存储结构 ................................................................................................. 153
6.5.2 树、森林与二叉树的转换 ............................................................................. 156
6.5.3 树和森林的遍历 ............................................................................................. 158
6.6 哈夫曼树及其应用 .................................................................................................... 159
6.6.1 哈夫曼树的基本概念 ..................................................................................... 159
6.6.2 构造哈夫曼树 ................................................................................................. 161
6.6.3 哈夫曼编码 ..................................................................................................... 163
6.7 本章小结 .................................................................................................................... 165
习题 ..................................................................................................................................... 166
编程实例 ............................................................................................................................. 168
第7 章 图 .................................................................................................. 172
7.1 图的定义与基本术语 ................................................................................................ 173
7.1.1 图的定义 ......................................................................................................... 173
7.1.2 基本术语 ......................................................................................................... 175
7.2 图的存储结构 ............................................................................................................ 177
7.2.1 邻接矩阵 ......................................................................................................... 177
7.2.2 邻接链表 ......................................................................................................... 179
7.2.3 十字链表 ......................................................................................................... 182
7.2.4 邻接多重表 ..................................................................................................... 183
7.3 图的遍历 .................................................................................................................... 184
7.3.1 深度优先搜索 ................................................................................................. 185
7.3.2 广度优先搜索 ................................................................................................. 187
7.4 图的应用 .................................................................................................................... 189
7.4.1 最小生成树 ..................................................................................................... 189
目 录 | ix
7.4.2 最短路径问题 ................................................................................................. 195
7.4.3 AOV 网与拓扑排序 ....................................................................................... 200
7.4.4 AOE 网与关键路径 ........................................................................................ 203
7.5 本章小结 .................................................................................................................... 208
习题 ..................................................................................................................................... 209
编程实例 ............................................................................................................................. 211
第8 章 查找 ............................................................................................... 216
8.1 查找的基本概念 ........................................................................................................ 217
8.2 线性表的查找 ............................................................................................................ 218
8.2.1 顺序查找 ......................................................................................................... 218
8.2.2 折半查找 ......................................................................................................... 219
8.2.3 分块查找 ......................................................................................................... 222
8.3 树表的查找 ................................................................................................................ 223
8.3.1 二叉排序树 ..................................................................................................... 223
8.3.2 平衡二叉树 ..................................................................................................... 229
8.3.3 B 树.................................................................................................................. 234
8.4 散列表的查找 ............................................................................................................ 241
8.4.1 散列表的基本概念 ......................................................................................... 241
8.4.2 散列函数的构造方法 ..................................................................................... 242
8.4.3 处理冲突的方法 ............................................................................................. 244
8.4.4 散列表的查找 ................................................................................................. 247
8.5 本章小结 .................................................................................................................... 248
习题 ..................................................................................................................................... 249
编程实例 ............................................................................................................................. 251
第9 章 排序 ............................................................................................... 254
9.1 排序的基本概念 ........................................................................................................ 255
9.1.1 什么是排序 ..................................................................................................... 255
9.1.2 排序的实现 ..................................................................................................... 256
9.2 插入排序 .................................................................................................................... 257
9.2.1 直接插入排序 ................................................................................................. 257
9.2.2 折半插入排序 ................................................................................................. 259
9.2.3 希尔排序 ......................................................................................................... 260
9.3 交换排序 .................................................................................................................... 261
x | 数据结构案例教程(C 语言版)
9.3.1 冒泡排序 ......................................................................................................... 261
9.3.2 快速排序 ......................................................................................................... 263
9.4 选择排序 .................................................................................................................... 266
9.4.1 简单选择排序 ................................................................................................. 266
9.4.2 堆排序 ............................................................................................................. 268
9.5 归并排序 .................................................................................................................... 273
9.6 基数排序 .................................................................................................................... 275
9.6.1 多关键字排序 ................................................................................................. 275
9.6.2 链式基数排序 ................................................................................................. 275
9.7 本章小结 .................................................................................................................... 279
习题 ..................................................................................................................................... 280
编程实例 ............................................................................................................................. 282
猜您喜欢