第1章 数组 1
1.1 数组的C++程序 1
1.2 顺序表 4
1.2.1 顺序表描述 4
1.2.2 顺序表的C++程序 4
1.3 字符串 9
1.3.1 字符串概述 9
1.3.2 字符串的C++程序 9
第2章 链表 13
2.1 线性表的链式表示和实现 13
2.1.1 概述 13
2.1.2 带头结点的单链表的C程序 13
2.1.3 不带头结点的单链表的C程序 19
2.2 循环链表 23
2.2.1 循环链表概述 23
2.2.2 循环链表的C程序 23
2.3 不带表头结点的单链表的C++程序 28
2.4 用模板定义的带头结点的单链表 32
2.5 单链表的游标(Iterator)类 35
第3章 栈和队列 41
3.1 栈 41
3.1.1 栈的描述 41
3.1.2 栈的C程序 41
3.2 链式栈的C++程序及运行 43
3.3 队列 45
3.3.1 队列的描述 45
3.3.2 实现链队列的C程序 46
第4章 二叉树 49
4.1 二叉树概述 49
4.2 二叉树的Turbo Pascal(5.5)语言程序 49
4.3 二叉树的C++程序及实例 52
4.4 线索二叉树 60
4.4.1 概述 60
4.4.2 线索二叉树Turbo Pascal(5.5)语言程序 61
4.5 哈夫曼树及应用的C程序 63
第5章 集合与搜索 67
5.1 集合 67
5.1.1 概述 67
5.1.2 用位向量实现集合运算的C++程序 67
5.1.3 用有序链表实现集合运算 70
5.2 静态搜索结构 75
5.2.1 顺序搜索的C++程序 75
5.2.2 基于有序顺序表的折半搜索 78
5.3 二叉搜索树 81
5.3.1 概述 81
5.3.2 二叉搜索树的C++程序 81
5.4 平衡二叉树 87
5.4.1 概述 87
5.4.2 平衡二叉搜索树(AVL)的C++程序 87
第6章 图 93
6.1 邻接表(Adjacency List)的C程序 93
6.2 十字链表 95
6.2.1 概述 95
6.2.2 十字链表的C程序 95
6.3 图的连通性的C程序(1) 99
6.4 图的连通性的C程序(2) 105
6.5 拓扑排序 108
6.5.1 概述 108
6.5.2 拓扑排序的C程序 108
6.6 关键路径的C程序 111
6.7 邻接表、图的深度优先搜索的C++程序(1) 114
6.8 邻接表、图的深度优先搜索的C++程序(2) 119
6.9 用顶点表示活动的网络(AOV网络) 124
6.10 用边表示活动的网络(AOE网络) 128
第7章 排序 135
7.1 插入排序 135
7.1.1 直接插入排序概述 135
7.1.2 直接插入排序的Turbo Pascal程序 135
7.2 折半插入排序 137
7.2.1 概述 137
7.2.2 折半插入排序的程序 137
7.3 希尔排序 139
7.3.1 希尔排序的Turbo Pascal(5.5)语言程序(1) 140
7.3.2 希尔排序的Turbo Pascal(5.5)语言程序(2) 142
7.4 选择排序 145
7.4.1 概述 145
7.4.2 选择排序的Turbo Pascal(5.5)语言程序 145
7.5 堆排序 146
7.5.1 概述 146
7.5.2 堆排序的Turbo Pascal语言程序 147
参考文献 150