绪论
1.1数据结构的基本概念1
1.1.1两个例子1
1.1.2什么是数据结构4
1.1.3数据结构的图形表示7
1.1.4线性数据结构与非线性数据结构8
1.2算法方面的考虑9
1.2.1什么是算法9
1.2.2算法的复杂度10
习题12
线性表及其顺序存储结构
2.1线性表的基本概念14
2.1.1什么是线性表14
2.1.2线性表的顺序存储结构——顺序表15
2.1.3顺序表的基本运算——插入与删除16
2.1.4顺序表类20
2.2栈及其应用24
2.2.1什么是栈24
2.2.2栈的顺序存储及其运算26
2.2.3顺序栈类28
2.2.4表达式的计算31
2.3队列及其应用37
2.3.1什么是队列37
2.3.2循环队列及其运算37
2.3.3循环队列类40
2.3.4队列的应用44
2.4字符串49
2.4.1字符串的基本概念49
2.4.2字符串匹配50
习题55
线性链表
3.1线性链表的基本概念57
3.1.1线性表顺序存储的问题57
3.1.2线性链表的存储结构58
3.1.3线性链表类62
3.1.4带链的栈65
3.1.5带链的队列68
3.2线性链表的插入与删除72
3.3循环链表77
3.4多项式的表示与运算80
习题88
数组
4.1数组的顺序存储结构90
4.2规则矩阵的压缩91
4.3一般稀疏矩阵的表示94
4.3.1稀疏矩阵的三列二维数组表示95
4.3.2稀疏矩阵的线性链表表示108
4.3.3十字链表117
习题121
树与二叉树
5.1树123
5.2二叉树及其基本性质126
5.2.1什么是二叉树126
5.2.2二叉树的基本性质127
5.2.3满二叉树与完全二叉树128
5.3二叉树的遍历129
5.4二叉树的存储结构131
5.4.1二叉链表131
5.4.2二叉链表类133
5.5穿线二叉树137
5.5.1穿线二叉树的概念137
5.5.2中序穿线二叉树137
5.5.3前序穿线二叉树142
5.5.4后序穿线二叉树145
5.6表达式的线性化149
5.6.1有序树的二叉树表示149
5.6.2如何对表达式进行线性化151
5.7最优二叉树及其应用151
5.7.1什么是最优二叉树151
5.7.2最优二叉树的构造153
5.7.3霍夫曼编码158
习题159
图
6.1图的基本概念161
6.2图的存储结构162
6.2.1关联矩阵162
6.2.2求值矩阵163
6.2.3邻接表164
6.2.4邻接多重表166
6.3图的遍历166
6.3.1纵向优先搜索法167
6.3.2横向优先搜索法167
6.4图邻接表类167
6.5最短距离问题173
习题179
查找技术
7.1顺序查找180
7.2有序表的对分查找180
7.3分块查找185
7.4二叉排序树查找186
7.4.1二叉排序树的基本概念187
7.4.2二叉排序树的插入188
7.4.3二叉排序树的删除190
7.4.4二叉排序树查找192
7.5多层索引树查找195
7.5.1B-树195
7.5.2B+树205
习题215
Hash表技术
8.1Hash表的基本概念217
8.1.1直接查找技术217
8.1.2Hash表218
8.1.3Hash码的构造218
8.2几种常用的Hash表220
8.2.1线性Hash表220
8.2.2随机Hash表224
8.2.3溢出Hash表229
8.2.4拉链Hash表234
8.2.5指标Hash表239
习题239
排序技术
9.1互换类排序241
9.1.1冒泡排序241
9.1.2快速排序243
9.2插入类排序246
9.2.1简单插入排序247
9.2.2希尔排序249
9.3选择类排序251
9.3.1简单选择排序251
9.3.2堆排序252
9.4拓扑分类255
9.5其他排序方法简介258
9.5.1归并排序258
9.5.2基数排序261
习题262
参考文献263