第1章 线性表 1
1.1 顺序存储结构 1
1.1.1 顺序表 2
1.1.2 STL的顺序存储结构——vector顺序表 15
1.2 链式存储结构 18
1.2.1 单链表 18
1.2.2 双向循环链表 25
1.2.3 STL的链式存储结构——list链表 31
1.3 静态链表存储结构 33
第2章 栈和队列 40
2.1 栈 40
2.1.1 栈的顺序存储结构 41
2.1.2 栈的链式存储结构 44
2.1.3 STL的栈结构 45
2.2 栈的应用与递归 46
2.2.1 数制转换 46
2.2.2 表达式求值 47
2.2.3 汉诺塔问题与递归的实现 51
2.2.4 迷宫问题 53
2.2.5 皇后问题 59
2.2.6 马踏棋盘问题 64
2.3 队列 68
2.3.1 队列的链式存储结构 69
2.3.2 队列的顺序存储结构 71
2.3.3 STL的队列结构 80
2.4 队列的应用——排队和排队机的模拟 82
第3章 字符串和矩阵 90
3.1 字符串 90
3.1.1 字符串的按需(堆)存储结构 90
3.1.2 STL的串结构 97
3.1.3 字符串的模式匹配算法 98
3.2 矩阵 108
3.2.1 多维数组的顺序存储结构 108
3.2.2 矩阵的压缩存储 111
第4章 树与二叉树 118
4.1 二叉树的顺序存储结构 118
4.2 二叉树的链式存储结构 118
4.3 二叉排序树 131
4.4 平衡二叉树 138
4.5 红黑树 157
4.6 伸展树 169
4.7 树的存储结构 176
4.8 赫夫曼树和赫夫曼编码 188
第5章 图 194
5.1 图的邻接矩阵存储结构 197
5.2 图的邻接表存储结构 211
5.3 图的深度优先遍历和广度优先遍历 222
5.4 图的应用 226
5.4.1 无向图的连通分量和生成树 226
5.4.2 最小生成树 229
5.4.3 关节点和重连通分量 235
5.4.4 拓扑排序和关键路径 240
5.4.5 最短路径 247
第6章 查找 260
6.1 静态查找表 260
6.2 哈希表的插入、删除及查找 265
6.3 动态查找表 274
6.3.1 B树 274
6.3.2 键树 286
第7章 内部排序 302
7.1 插入排序 302
7.2 冒泡排序 305
7.3 简单选择排序 307
7.4 希尔排序 309
7.5 快速排序 311
7.6 堆排序 313
7.7 二路归并排序 318
7.8 基数排序 320
第8章 外部排序 328
8.1 多路平衡归并 329
8.2 置换-选择排序 333
参考文献 336