第1章 哪有那么难 1
1.1 什么是数据结构? 1
1.2 到底都学些啥? 2
1.3 什么是抽象数据类型(ADT)? 4
1.4 什么是逻辑结构? 6
1.5 什么是物理结构? 7
1.6 为什么会有这么多数据结构咧? 8
第2章 哎呀 算法 10
2.1 什么是算法? 10
2.2 算法效率的度量方法 13
2.3 算法的时间复杂度和空间复杂度 14
第3章 从数组和串说起 17
3.1 数组内存的静态分配和动态分配 17
3.2 一维数组的访问 18
3.3 一维数组的遍历 21
3.4 一维数组元素的插入和删除 26
3.5 二维数组以及假如没有二维数组 39
3.6 有一种矩阵叫稀疏矩阵 43
3.7 什么是串? 45
3.8 字符串的基本处理 48
3.9 字符串略微高级点的处理 62
第4章 另一个重要的东西:链表 66
4.1 什么是链表? 66
4.2 单向链表 68
4.3 单向循环链表 78
4.4 双向链表 96
4.5 链表的遍历和连接 100
4.6 链表结点的插入和删除 106
4.7 链表的反转以及静态链表 123
第5章 学以致用——栈与队列 129
5.1 什么是栈?什么是队列? 129
5.2 栈和队列的实现 131
5.3 栈与队列实现的细节技巧 138
5.4 栈的应用之一:递归?(大雾) 153
5.5 栈的应用之二:回溯算法 159
5.6 栈的应用之三:简易文字处理器 164
5.7 队列应用:好长的代码 167
第6章 画棵树吧 170
6.1 什么是树 170
6.2 树的存储结构 173
6.3 什么是二叉树?它是树吗? 180
6.4 二叉树的存储结构 184
6.5 二叉树的遍历 186
6.6 二叉树的构建 190
6.7 二叉树的查找 203
6.9 二叉树的复制 209
6.1 0线索二叉树 213
6.1 1树、森林和二叉树的转换 222
6.1 2哈夫曼树和哈夫曼编码 225
第7章 无图 无真相 229
7.1 什么是图 229
7.2 图的表示法 232
7.3 图的遍历 241
7.4 最短路径计算 262
7.5 最小生成树 264
7.6 有向图的拓扑排序 268
第8章 查找的基础:排序 271
8.1 经典的回顾:冒泡排序法 271
8.2 又是老朋友——选择排序法 273
8.3 插入排序法 274
8.4 希尔排序法 277
8.5 快速排序法 280
8.6 二叉查找树排序法 286
8.7 顺带一提的堆排序 289
第9章 最后,该查找啦 293
9.1 顺序查找 293
9.2 二分查找 295
9.3 索引查找 299
9.4 二叉查找树查找 300
9.5 平衡二叉树(AVL树) 315
9.6 B-树和B+树 317
9.7 了解一下哈希查找 324
会是终结吗?嘿嘿 当然不会 326
参考文献 327