第一章 链表 1
何谓链表 1
简单静态链表 1
处理动态链表的函数 2
动态链表的准备工作 3
链表的建立 4
链表的显示 4
结点的插入 5
结点的删除 5
获得结点元素值 6
查找结点元素X的位置 6
返回链表的长度 7
连接两个链表 7
比较两个链表是否相同 7
释放链表 7
完整的链表程序 8
数组仿真链表 13
数组仿真链表的优化 15
指针仿真链表 18
指针与数组链表的比较 20
求两个一元多项式之和 23
密钥 26
课后练习 28
第二章 堆栈 29
堆栈的定义 29
建立堆栈的准备工作 29
初始化栈 30
入栈 30
出栈 31
取栈顶元素 31
判断栈是否为空 31
显示栈元素 31
释放栈 32
指针仿真堆栈 32
数组仿真堆栈 35
数制转换 37
判断回文数 38
行编辑程序 40
后序表达式 41
机器人搬运问题 47
课后练习 53
第三章 队列 55
队列的定义 55
队列的基本操作 55
数组仿真队列 56
数组循环队列 57
链表仿真队列 59
队列排序 61
搭档问题 63
封闭面积问题 66
第四章 树 69
基本概念 69
树的表示 69
树的术语 70
二叉树的概念 71
二叉树的性质 72
二叉树数组表示法 72
二叉树结构数组法 75
二叉树链表表示法 77
数组结构转链表结构 80
二叉树的前序遍历 81
二叉树的中序遍历 83
二叉树的后序遍历 84
二叉树的图形化显示 85
FBI树 88
已知前序中序求后序 90
已知后序中序求前序 91
已知前序后序求中序 91
二叉查找树 95
二叉查找树样例 100
最优二叉树 104
构造最优二叉树 104
哈夫曼编码 105
表达式处理 109
一般树转二叉树 115
堆排序 116
优先队列 121
烽火传递 124
第五章 图 131
图的基本概念 131
邻接数组表示法 133
邻接列表表示法 135
加权边的图形 137
深度优先法 138
广度优先法 141
生成树问题 145
Kruskal算法 146
Prims算法 150
Dijkstra算法 153
Dijkstra算法的堆优化 155
Bellman-Ford算法 160
Bellman-Ford算法的优化 163
SPFA 164
Floyd算法 166
次小生成树算法 168
度限制生成树 173
前向星表示法 178
一笔画问题 180
补天计划 182
拓扑排序 185
关键路径 189
第六章 哈希表 197
哈希表 197
单词拼写检查 201
相同的雪花 203
零和游戏 205
古书密码 208
第七章 并查集 210
并查集算法 210
无所不在的宗教 214
星际争霸 216
宇宙食物链 220
第八章 线段树 224
太空堡垒 224
天网 230
致命武器 232
无限轮回 235
时间锁链 240
第九章 二分图 244
二分图最大匹配问题 244
最小边覆盖问题 253
最小点覆盖问题 253
最小路径覆盖问题 255
最佳匹配问题 260
参考文献 270