图书简介:
第1章 概论 1
1.1 引言 1
1.1.1 什么是数据结构 1
1.1.2 数据结构研究什么 1
1.2 数据结构的基本概念 3
1.3 算法和算法的分析 4
1.3.1 算法及算法的描述 4
1.3.2 算法设计的要求 4
1.3.3 算法的分析 5
1.4 总结与提高 7
习题 8
第2章 线性表 11
2.1 线性表的定义及运算 11
2.1.1 线性表的定义 11
2.1.2 线性表的基本运算 11
2.2 线性表的顺序存储结构 12
2.2.1 顺序表 12
2.2.2 顺序表上基本运算的实现 13
2.3 线性表的链式存储结构 16
2.3.1 单链表及其基本运算 16
2.3.2 循环链表 20
2.4 顺序表与链表的比较 21
2.5 典型题例 22
2.6 实训例题 24
2.6.1 实训例题1:有序顺序表的建立及查找 24
2.6.2 实训例题2:多项式的表示和相加 27
2.7 总结与提高 31
2.7.1 主要知识点 31
2.7.2 提高题例 32
习题 33
实训习题 35
第3章 堆栈和队列 36
3.1 堆栈 36
3.1.1 堆栈的定义及基本运算 36
3.1.2 堆栈的顺序存储结构 36
3.1.3 堆栈的链式存储结构 39
3.2 栈典型题例 42
3.3 队列 43
3.3.1 队列的定义及运算 43
3.3.2 队列的顺序存储结构 44
3.3.3 队列的链式存储结构 46
3.4 队列典型题例 48
3.5 实训例题 50
3.5.1 实训例题1:顺序循环队列的操作 50
3.5.2 实训例题2:括号配对 52
3.6 总结与提高 56
3.6.1 主要知识点 56
3.6.2 提高题例 56
习题 58
实训习题 60
第4章 串与数组 62
4.1 串及其基本运算 62
4.1.1 串的基本概念 62
4.1.2 串的基本运算 63
4.2 串的存储结构 64
4.2.1 串的顺序存储 64
4.2.2 串的堆存储结构 66
4.2.3 串的链式存储 67
4.3 数组 68
4.3.1 数组的定义 68
4.3.2 一维数组、二维数组和多维数组 69
4.4 典型题例 70
4.5 实训例题 71
4.5.1 实训例题1:字符串操作 71
4.5.2 实训例题2:二维数组 74
4.6 总结与提高 76
4.6.1 主要知识点 76
4.6.2 提高题例 77
习题 79
实训习题 81
第5章 树和二叉树 82
5.1 树 82
5.1.1 树的基本概念 82
5.1.2 树的基本操作 84
5.1.3 树的存储结构 85
5.2 二叉树 88
5.2.1 二叉树的定义及基本操作 88
5.2.2 二叉树的性质 89
5.2.3 二叉树的存储结构 91
5.3 遍历二叉树 93
5.3.1 二叉树的遍历方法 93
5.3.2 二叉树遍历算法应用典型例题 102
5.4 树和二叉树的关系 104
5.4.1 树转换为二叉树 104
5.4.2 树的遍历 105
5.5 哈夫曼树及其应用 106
5.5.1 哈夫曼树的定义及构造 106
5.5.2 哈夫曼树的应用 109
5.6 典型题例 111
5.7 实训例题 113
5.7.1 实训例题1:根据顺序存储建立二叉链表,并对二叉树进行先序、中序、后序遍历 113
5.7.2 实训例题2:设计哈夫曼编码 116
5.8 总结与提高 121
5.8.1 主要知识点 121
5.8.2 提高题例 122
习题 124
实训习题 126
第6章 图 127
6.1 图的定义和术语 127
6.1.1 图的定义 127
6.1.2 图的基本术语 127
6.1.3 图的基本操作 129
6.2 图的存储结构 130
6.2.1 邻接矩阵 130
6.2.2 邻接表 132
6.2.3 邻接矩阵和邻接表的比较 135
6.3 图的遍历 135
6.3.1 连通图的深度优先搜索 135
6.3.2 连通图的广度优先搜索 137
6.3.3 非连通图的遍历 139
6.4 最小生成树 139
6.4.1 生成树及最小生成树 139
6.4.2 普里姆算法 140
6.4.3 克鲁斯卡尔算法 141
6.5 最短路径 142
6.6 拓扑排序 145
6.7 典型题例 149
6.8 实训例题 152
6.8.1 实训例题1:图的遍历 152
6.8.2 实训例题2:设计学习计划 158
6.9 总结与提高 162
6.9.1 主要知识点 162
6.9.2 提高题例 162
习题 164
实训习题 166
第7章 查找 168
7.1 基本概念 168
7.2 线性表的查找 168
7.2.1 顺序查找 169
7.2.2 折半查找 170
7.2.3 分块查找 172
7.3 二叉排序树的查找 173
7.3.1 二叉排序树的定义 173
7.3.2 二叉排序树的查找算法 174
7.3.3 二叉排序树的建立与插入 175
7.3.4 二叉排序树的查找算法分析 177
7.4 哈希表的查找 178
7.4.1 哈希表的概念 178
7.4.2 哈希函数的构造方法 179
7.4.3 处理冲突的方法 181
7.4.4 哈希表上的运算 184
7.5 典型题例 186
7.6 实训例题 189
7.6.1 实训例题1:构造二叉排序树 189
7.6.2 实训例题2:哈希表的操作 192
7.7 总结与提高 197
7.7.1 主要知识点 197
7.7.2 提高题例 198
习题 200
实训习题 201
第8章 排序 202
8.1 排序的基本概念 202
8.2 插入排序 202
8.2.1 直接插入排序 203
8.2.2 希尔排序 204
8.3 交换排序 206
8.3.1 冒泡排序 206
8.3.2 快速排序 207
8.4 选择排序 209
8.4.1 直接选择排序 209
8.4.2 堆排序 210
8.5 各种内部排序方法的比较 214
8.7 典型题例 215
8.8 实训例题 217
8.8.1 实训例题1:不同排序算法的比较 217
8.8.2 实训例题2:学生成绩名次表 225
8.9 总结与提高 231
8.9.1 主要知识点 231
8.9.2 提高题例 232
习题 233
实训习题 236
附录A 数据结构实训指南 237
展开
自《数据结构与实训(第2版》出版以来,以其内容组织合理、例题丰富、实践性强等优点受到了广大读者的欢迎。为了适应高职高专教育发展的需要,根据广大读者和出版社的要求对第2版进行修订。具体修改如下:
(1)对全书一些章节重新进行了编写,以更简明、浅显的语言讲述各知识点,使教学内容更通俗易懂,易于学生接受。
(2)对每章的典型题例进行了重新调整、编写,降低了难度,增加了实用性。
(3)每章增加了总结与提高,对本章进行总结,并给出了一些有一定难度的例题。
(4)删除了第2版的3.3、4.3、5.4节,2.3.3节以及5.5节关于森林的内容;6.4.2节关于普里姆算法的实现、附录A中关于TC2.0的内容。
(5)提供电子教案和习题答案,方便学生学习和教师教学。
本书讲授学时数为60学时左右,实训学时数为20学时以上。教师可根据学时数和学生的实际情况选讲本书的例子。
在本书的修订中,电子工业出版社编辑提出了许多宝贵意见和建议,并给予了大力支持和帮助,在此表示衷心的感谢。
本书有大量的算法语句、程序语句及计算公式,对于其中的变量,为了方便读者阅读,避免歧义,不再区分正、斜体,而是统一采用正体,特此说明。
本书由张红霞、白桂梅、王勤任主编,由谢晓东、邹金萍、高俊任副主编。张红霞审阅了第1~4章、附录A,白桂梅审阅了第5~8章,全书由张红霞统稿。
由于编者水平有限,虽然在编写过程中不遗余力,但书中疏漏和错误之处在所难免,恳请广大同行和读者不吝指正。
编 者
展开