目录 1
第一章 对算法的认识 1
1.1 什么是算法 1
1.2 关于算法的几点注解 3
1.3 评估算法的好坏 4
1.4 习题 6
第二章 设计算法常用的策略 9
2.1 对应的策略 9
2.2 大化小的策略 14
2.3 归纳的策略 19
2.4 制定目标的策略 29
2.5 穷举的策略 34
2.6 习题 36
3.1 数组与下标 39
第三章 设计算法常用的技法 39
3.2 栈与回溯 49
3.3 队列与搜索 61
3.4 使用指针 72
3.5 继承 78
3.6 习题 83
第四章 供参考的算法设计 85
4.1 关于线性表的算法 85
4.1.1 线性表的顺序存贮单元seqlist 85
4.1.2 线性表的链表存贮单元linklist 89
4.1.3 约瑟夫问题 95
4.1.4 矩阵乘法 99
4.1.5 矩阵的转置(对稀疏矩阵) 102
4.1.6 用队列走迷宫 106
4.1.7 单元多项式的相加 111
4.1.8 单链表的逆向 115
4.2 列举与计数 119
4.2.1 排列问题 119
4.2.2 二项式定理: 135
4.2.3 组合的生成 137
4.2.4 自然数的拆分 144
4.2.5 数字旅游问题 156
4.2.6 带限制条件的自然数拆分 165
4.3 遍历算法 167
4.3.1 沿指针遍历二叉树 168
4.3.2 按层号遍历二叉树 174
4.3.3 深度优先遍历(DFS)和广度优先遍历(BFS) 182
4.4 图的算法 183
4.4.1 图的邻接矩阵单元gadjmatx 183
4.4.2 图的邻接表单元gadjlist 188
4.4.3 无向图结构的转换算法 196
4.4.4 深度优先(DFS)遍历算法 198
4.4.5 广度优先(BFS)遍历算法 205
4.4.6 图遍历算法的应用(跳马周游算法) 209
4.4.7 跳马周游算法的进一步讨论 216
4.4.8 最小生成树算法 223
第五章 算法设计杂例 235
5.1 排序算法设计 235
5.1.1 排序二叉树 235
5.1.2 利用顺序表进行排序 237
5.1.3 拓扑排序 248
5.2 贪心法小议 252
5.3 动态规划小议 254
5.4 分枝定界法小议 258
5.5 习题 260