第1章 线性表 1
1.1 顺序存储结构 2
1.2 链式存储结构 14
1.2.1 单链表 14
1.2.2 单循环链表 23
1.2.3 双向循环链表 29
1.2.4 不设头结点的链表 35
1.3 静态链表存储结构 47
第2章 栈和队列 54
2.1 栈 54
2.1.1 栈的顺序存储结构 54
2.1.2 栈的链式存储结构 57
2.2 栈的应用与递归 59
2.2.1 数制转换 59
2.2.2 表达式求值 60
2.2.3 汉诺塔问题与递归的实现 64
2.2.4 迷宫问题 67
2.2.5 皇后问题 73
2.2.6 马踏棋盘问题 77
2.2.7 背包问题 82
2.3 队列 86
2.3.1 队列的链式存储结构 87
2.3.2 队列的顺序存储结构 90
2.4 队列的应用——排队和排队机的模拟 98
第3章 字符串和矩阵 106
3.1 字符串 106
3.1.1 字符串的按需(堆)存储结构 106
3.1.2 字符串的模式匹配算法 112
3.2 矩阵 117
3.2.1 多维数组的顺序存储结构 117
3.2.2 矩阵的压缩存储 121
第4章 树与二叉树 128
4.1 二叉树的顺序存储结构 128
4.2 二叉树的链式存储结构 128
4.3 二叉树的遍历 142
4.4 线索二叉树 142
4.5 二叉排序树 149
4.6 平衡二叉树 156
4.7 红黑树 173
4.8 伸展树 185
4.9 树的存储结构 191
4.10 赫夫曼树和赫夫曼编码 204
第5章 图 210
5.1 图的邻接矩阵存储结构 212
5.2 图的邻接表存储结构 227
5.3 图的深度优先遍历和广度优先遍历 239
5.4 图的应用 243
5.4.1 无向图的连通分量和生成树 243
5.4.2 最小生成树 245
5.4.3 关节点和重连通分量 251
5.4.4 拓扑排序和关键路径 255
5.4.5 最短路径 263
第6章 查找 275
6.1 静态查找表 275
6.2 静态树表 280
6.3 哈希表的插入、删除及查找 284
6.4 动态查找表 293
6.4.1 B树 293
6.4.2 键树 306
第7章 内部排序 322
7.1 插入排序 322
7.2 冒泡排序 325
7.3 简单选择排序 326
7.4 希尔排序 328
7.5 快速排序 329
7.6 堆排序 331
7.7 二路归并排序 334
7.8 静态链表排序 336
7.9 基数排序 340
第8章 外部排序 349
8.1 多路平衡归并 351
8.2 置换-选择排序 355
第9章 动态存储管理 362
9.1 边界标识法 362
9.2 伙伴系统 383
参考文献 393