第1章 概论 1
1.1引言 1
1.2基本概念 3
1.3逻辑结构与存储结构 4
1.4抽象数据类型 5
1.5算法 6
本章小结 14
习题 15
第2章 线性表 19
2.1线性表的定义 19
2.2线性表的顺序存储 20
2.3线性表的链式存储 25
2.4单链表 25
2.5循环单链表 34
2.6双链表 34
2.7顺序表与链表的比较 35
2.8应用实例:一元多项式 35
本章小结 39
习题 39
第3章 栈和队列 44
3.1栈 44
3.2一般顺序栈 45
3.3双端栈 47
3.4一般链栈 48
3.5多链栈 49
3.6应用实例:栈的应用 50
3.7队列 55
3.8循环队列 56
3.9链队列 59
本章小结 61
习题 61
第4章 串 65
4.1串的定义 65
4.2串的存储结构 66
4.3串的模式匹配 66
本章小结 71
习题 71
第5章 数组和广义表 73
5.1数组 73
5.2特殊矩阵的压缩存储 74
5.3稀疏矩阵的压缩存储 75
5.4广义表 76
本章小结 76
习题 77
第6章 树和二叉树 79
6.1树 79
6.2二叉树 83
6.3二叉树的遍历 88
6.4二叉树遍历的非递归算法 91
6.5二叉树遍历算法的应用 93
6.6创建二叉树 95
6.7树、森林与二叉树 100
6.8哈夫曼树 103
6.9哈夫曼编码 108
本章小结 111
习题 111
第7章 图 118
7.1图的基本概念 118
7.2图的存储结构 122
7.3图的遍历 130
7.4图的最小生成树 133
7.5最短路径 142
7.6有向无环图及其应用 149
本章小结 157
习题 157
第8章 查找 166
8.1查找的基本概念 166
8.2查找的基本方法 167
8.3顺序查找 167
8.4折半查找 168
8.5分块查找 170
8.6二叉排序树 172
8.7平衡二叉树 179
8.8散列查找 183
本章小结 193
习题 193
第9章 排序 199
9.1排序的基本概念与分类 199
9.2冒泡排序 201
9.3快速排序 204
9.4简单选择排序 209
9.5堆排序 211
9.6直接插入排序 217
9.7希尔排序 219
9.8归并排序 221
9.9基数排序 224
9.10排序算法的比较 227
本章小结 228
习题 228
附录A 测试函数的运行时间 233
附录B 并查集 234
附录C C++语言中stack的用法 235
附录D C++语言中queue的用法 236
参考文献 237