第1章 绪论 1
1.1 数据结构的发展 1
1.1.1 数据结构的发展简史 1
1.1.2 数据结构的研究内容 2
1.2 数据结构的基本概念和术语 4
1.3 数据的逻辑结构 4
1.4 数据的存储结构 6
1.5 算法和算法的描述 6
1.5.1 什么是算法 6
1.5.2 算法设计的要求 7
1.5.3 算法的描述 7
1.5.4 算法效率的评价 7
本章小结 8
复习思考题 9
第2章 线性表 12
2.1 线性表逻辑结构 12
2.1.1 线性表的定义 12
2.1.2 线性表的基本操作 13
2.2 线性表的顺序存储结构 14
2.2.1 顺序存储结构 14
2.2.2 基本操作的实现 15
2.3 线性表的链式存储结构 17
2.3.1 单链表 17
2.3.2 基本操作的实现 18
2.3.3 循环链表 22
2.3.4 双向链表 23
2.4 线性表的应用——多项式相加问题 25
本章小结 27
复习思考题 27
第3章 数组和广义表 31
3.1 数组 31
3.1.1 数组的概念及其存储结构 31
3.1.2 特殊矩阵的压缩存储 34
3.1.3 稀疏矩阵 36
3.2 广义表 40
3.2.1 广义表的定义 40
3.2.2 广义表的存储结构 41
3.2.3 广义表的递归算法 42
本章小结 44
复习思考题 44
第4章 栈和队列 47
4.1 栈 47
4.1.1 栈的定义及其运算 47
4.1.2 栈的顺序存储结构 49
4.1.3 栈的链式存储结构 51
4.1.4 栈的应用 52
4.2 队列 56
4.2.1 队列的定义及其运算 56
4.2.2 队列的顺序存储结构 57
4.2.3 队列的链式存储结构 60
4.2.4 队列的应用 63
复习思考题 63
第5章 串 66
5.1 串的定义及其基本运算 66
5.1.1 串的定义 66
5.1.2 串的基本运算 67
5.2 串的存储结构 68
5.2.1 串的定长顺序存储 68
5.2.2 串的链式存储结构 70
5.3 串的匹配算法 71
5.3.1 匹配算法 71
5.3.2 算法分析 72
5.4 串的应用——文本加密 73
复习思考题 75
第6章 树 77
6.1 树的定义和基本术语 77
6.1.1 树的定义 77
6.1.2 树的基本术语 78
6.2 二叉树 80
6.2.1 二叉树的定义 80
6.2.2 二叉树的性质 81
6.2.3 二叉树的存储结构 82
6.3 二叉树的遍历 84
6.3.1 先序遍历 84
6.3.2 中序遍历 85
6.3.3 后序遍历 85
6.3.4 由遍历序列恢复二叉树 86
6.4 线索二叉树 88
6.4.1 线索二叉树的定义 88
6.4.2 中序线索二叉树 89
6.5 二叉树、树和森林 91
6.5.1 树的存储结构 91
6.5.2 二叉树与树之间的转换 93
6.5.3 二叉树与森林之间的转换 94
6.5.4 树和森林的遍历 95
6.6 哈夫曼树及其应用 96
6.6.1 基本概念和术语 96
6.6.2 构造哈夫曼树 97
6.6.3 哈夫曼树的应用 100
复习思考题 101
第7章 图 107
7.1 图的定义和基本术语 107
7.1.1 图的定义 107
7.1.2 图的基本术语 108
7.2 图的存储方式 110
7.2.1 邻接矩阵 110
7.2.2 邻接表 111
7.3 图的遍历 113
7.3.1 深度优先搜索遍历 114
7.3.2 广度优先搜索遍历 115
7.4 图的生成树和最小生成树 117
7.4.1 生成树 117
7.4.2 最小生成树 118
7.4.3 普里姆算法 119
7.4.4 克鲁斯卡尔算法 120
7.5 最短路径 121
7.5.1 某源点到其余顶点之间的最短路径 121
7.5.2 有向图中每一对顶点之间的最短路径 123
7.6 有向无环图及其应用 126
7.6.1 拓扑排序 126
7.6.2 关键路径 129
复习思考题 132
第8章 查找 137
8.1 查找的概念 137
8.1.1 查找的基本概念 137
8.2 静态查找 139
8.2.1 顺序查找 139
8.2.2 二分查找 140
8.2.3 分块查找 142
8.3 动态查找 144
8.3.1 二叉排序树 144
8.3.2 平衡二叉树 147
8.3.3 B-树 149
8.4 哈希查找 150
8.4.1 哈希函数与哈希表 151
8.4.2 哈希函数的构造方法 151
8.4.3 解决冲突的主要方法 153
8.4.4 查找效率的分析 156
复习思考题 157
第9章 排序 161
9.1 排序基本概念 161
9.1.1 排序概念 161
9.1.2 排序分类 162
9.2 插入排序 163
9.2.1 直接插入排序 163
9.2.2 折半插入排序 164
9.2.3 希尔排序 165
9.3 插入排序 167
9.3.1 冒泡排序 167
9.3.2 快速排序 169
9.4 选择排序 170
9.4.1 简单选择排序 171
9.4.2 堆排序 172
9.5 归并排序 175
9.5.1 二路归并排序 176
9.6 基数排序 177
复习思考题 182
参考文献 186