第一部分基本概念 1
第一章绪论 1
1.1 C语言简介 1
目 录 1
1.2什么是数据结构 2
1.3 C语言与数据结构 2
1.4基本术语介绍 3
1.5问题:数据汇总 5
1.6解法Ⅰ 5
1.7解法Ⅱ 7
1.8性能测量 10
1.9讨论 12
1.10习题 12
2.1算法的概念 14
第二章算法的复杂性 14
2.2取幂算法 15
2.3渐近分析 21
2.4实现问题 23
2.5讨论 24
2.6习题 26
第三章指针与动态存储 29
3.1变量与指针 29
3.2字符串与数组 33
3.3类型定义与结构 40
3.4动态存储分配 43
3.5讨论 46
3.6习题 47
4.1付帐单的两个方法 49
第四章栈和队列 49
4.2栈数据类型 50
4.3队列数据类型 53
4.4应用例子 56
4.5讨论 61
4.6习题 62
第五章链表 64
5.1 表 64
5.2应用:集合 67
5.3用于链接结构的其它工具 75
5.4多重链接结构 79
5.5讨论 80
5.6习题 81
6.1关于存储器的进一步讨论 83
第六章存储器组织 83
6.2变量与运行时栈 85
6.3堆管理的一个简单方法 87
6.4物理存储器组织 90
6.5讨论 92
6.6习题 93
第二部分高效率算法 95
第七章检索(查找) 95
7.1关于检索的几个问题 95
7.2自组织链表 97
7.3二分检索 99
7.4二叉树 101
7.5二叉检索树 104
7.6讨论 109
7.7习题 110
第八章散列法 113
8.1理想散列法 113
8.2利用探测法解决冲突 113
8.3利用链表解决冲突 119
8.4讨论 121
8.5习题 122
第九章分类表 123
9.1 AVL(平衡)树 123
9.2 2,4树 128
9.3实现:红一黑树 131
9.4进一步的课题 141
9.5讨论 143
9.6习题 144
第十章优先队列 146
10.1优先队列数据类型 146
10.2堆 147
10.3堆的实现 151
10.4霍夫曼(HUFFMAN)树 153
10.5其它运算 157
10.6讨论 159
10.7习题 159
第十一章分类 162
11.1分类的基本概念 162
11.2两个简单分类算法 163
11.3两个高效率分类算法 166
11.4两个有用的分类思想 172
11.5讨论 174
11.6习题 175
第十二章应用数据结构 177
12.1复式记帐法 177
12.2基本解 180
12.3解法Ⅰ 186
12.4解法Ⅱ 188
12.5讨论 190
12.6习题 191
第三部分高级课题 192
第十三章无环图 192
13.1有根树 192
13.2不相交集合 194
13.3拓扑分类 198
13.4讨论 200
13.5习题 201
第十四章图 202
14.1基本术语介绍 202
14.2数据结构 203
14.3最短路径 204
14.4最小生成树 210
14.5遍历顺序和图的连通性 212
14.6讨论 218
14.7习题 219
附录 221
附录A C程序员参考 221
附录B库函数 228
附录C头文件 232
附录D部分习题答案 233