序言 1
第一章 线性表 1
1.1 线性表及其基本运算 1
1.1.1 线性表 1
目录 1
1.2 顺序存贮的线性表 2
7.5.3 传递闭包 趔 2
1.1.2 线性表的基本运算 2
1.2.1 线性表的插入 3
1.2.2 线性表的删除 4
1.2.3 用顺序存贮的线性表表示多项式 5
1.3 顺序存贮的栈和队列 8
1.3.1 栈及其基本运算 8
1.3.2 队列及其基本运算 11
1.3.3 环形队列 13
1.3.4 双向队列 16
1.3.5 栈的应用 16
1.4 链接存贮的线性表 27
1.4.1 线性链表的逻辑结构和建立 28
1.4.2 线性链表的插入和删除 29
1.4.3 用线性链表表示多项式 32
1.4.4 几种变形的线性链表 34
1.4.5 双向链表 37
1.5 链接存贮的栈和队列 39
1.5.1 链接栈 39
1.5.2 链接队列 40
1.6 线性表的其他存贮方式 42
1.6.1 压缩存贮 42
1.6.2 索引存贮 44
1.6.3 散列(Hash)存贮 45
1.7.1 顺序查找法 46
1.7 线性表的查找 46
1.7.2 二分查找法 48
1.7.3 分块查找法 50
1.7.4 Hash查找法 51
1.8.1 广义表的概念和存贮结构 56
1.8 广义表 56
1.8.2 广义表递归算法的实现 57
习题 58
第二章 串 61
2.1 串的基本概念及存贮结构 61
2.2 串的运算 62
2.3 模式匹配 64
习题 71
第三章 内部排序 72
3.1 插入排序 72
3.2 选择排序 74
3.3 冒泡排序 75
3.4 希尔排序 76
3.5 合并排序 78
3.5.1 有序结点序列的合并 78
3.5.2 两路合并排序 79
3.6 快速排序 80
3.7 基数排序 83
3.7.1 基数排序 84
3.7.2 多关键字排序 86
习题 86
第四章 数组 88
4.1 数组的顺序存贮 88
4.1.1 一维数组和二维数组 88
4.1.2 三维数组和n维数组 89
4.1.3 三角矩阵和带状矩阵 91
4.2 稀疏矩阵 92
4.2.1 用三元组数组表示的稀疏矩阵 92
4.2.2 用十字链表表示的稀疏矩阵 95
习题 100
第五章 树 102
5.1 树的基本概念 102
5.2 树的存贮结构 104
5.3 用树表示集合 108
5.4 树的遍历 114
5.5 树的线性表示 116
5.6 二叉树 120
5.7 二叉树的遍历 124
5.8 二叉树的顺序存贮 130
5.8.1 按层次序的存贮形式 130
5.8.2 按前序的存贮形式 131
5.9 穿线树和穿线排序 135
5.10 计算二叉树的数目 141
习题 144
第六章 树的查找和树的应用 146
6.1 查找树 146
6.2 满树、拟满树和丰满树 151
6.3 堆和堆排序 153
6.4 平衡树 157
6.5 最佳查找树 165
6.6 Huffman算法和Hu-Tucker算法 171
6.7 B-树 176
6.8 Trie结构 184
6.9 解答树 187
6.9.1 背包问题 188
6.9.2 皇后问题 195
习题 199
第七章 图 200
7.1 图的基本概念 200
7.2 图的存贮结构 203
7.2.1 邻接矩阵 203
7.2.2 邻接表 204
7.3 图的遍历与求图的连通分量 206
7.3.1 深度优先搜索法 206
7.3.2 广度优先搜索法 208
7.3.3 求图的连通分量 210
7.4 生成树和最小(代价)生成树 210
7.4.1 Prim算法 211
7.4.2 Kruskal算法 214
7.5 最短路径 215
7.5.1 求某个顶点到其他顶点的最短路径 215
7.5.2 求每一对顶点之间的最短路径 218
7.6 拓扑排序 225
7.7 关键路径 230
习题 235
第八章 外部排序 238
8.1 外部存贮设备 238
8.1.1 磁带存贮设备 238
8.1.2 磁盘存贮设备 239
8.2 磁盘文件的排序 240
8.3 磁带文件的排序 243
8.3.1 平衡合并排序 245
8.3.2 多阶段合并排序 245
习题 250
参考文献 251