第1章 数据结构与算法 1
1.1 数据结构的定义 1
1.1.1 数据与信息 2
1.1.2 数据的特性 2
1.2 算法 3
1.2.1 到处都是算法 3
1.2.2 算法的定义 4
1.3 算法性能的分析 6
1.3.1 Big-Oh 7
1.3.2 Ω(omega) 10
1.3.3 θ(theta) 10
1.4 常见算法介绍 10
1.4.1 分治法 10
1.4.2 递归法 11
1.4.3 贪心法 14
1.4.4 动态规划法 15
1.4.5 迭代法 16
1.4.6 枚举法 17
1.5 认识程序设计 18
1.5.1 程序开发流程 19
1.5.2 结构化程序设计 19
1.5.3 面向对象程序设计 20
本章习题 22
第2章 数组结构 24
2.1 线性表简介 24
2.2 认识数组 25
2.2.1 一维数组 26
2.2.2 二维数组 28
2.2.3 三维数组 31
2.2.4 n维数组 34
2.3 矩阵 34
2.3.1 矩阵相加 35
2.3.2 矩阵相乘 37
2.3.3 转置矩阵 40
2.3.4 稀疏矩阵 41
2.3.5 上三角矩阵 44
2.3.6 下三角矩阵 49
2.3.7 带状矩阵 53
2.4 数组与多项式 54
本章习题 56
第3章 链表 58
3.1 动态分配内存 58
3.2 单向链表 59
3.2.1 建立单向链表 60
3.2.2 单向链表中节点的删除 64
3.2.3 单向链表中新节点的
插入 69
3.2.4 单向链表的反转 73
3.2.5 单向链表的串接 76
3.2.6 多项式链表表示法 77
3.3 环形链表 83
3.3.1 环形链表中新节点的
插入 84
3.3.2 环形链表中节点的删除 84
3.3.3 环形链表的串接 87
3.3.4 稀疏矩阵的环形链表
表示法 91
3.4 双向链表 93
3.4.1 双向链表的定义 93
3.4.2 双向链表中新节点的
插入 94
3.4.3 双向链表中节点的删除 95
本章习题 98
第4章 堆栈 100
4.1 堆栈简介 100
4.1.1 用数组实现堆栈 101
4.1.2 用链表实现堆栈 105
4.2 堆栈的应用 109
4.2.1 汉诺塔问题 110
4.2.2 老鼠走迷宫 116
4.2.3 八皇后问题 121
4.3 算术表达式的表示法 124
4.3.1 中序法求值 125
4.3.2 前序法求值 126
4.3.3 后序法求值 127
4.4 中序法转为前序法与后序法 128
4.4.1 二叉树法 128
4.4.2 括号法 128
4.4.3 堆栈法 129
4.5 前序法与后序法表达式
转换成中序法表达式 134
4.5.1 括号法 134
4.5.2 堆栈法 135
本章习题 137
第5章 队列 139
5.1 认识队列 139
5.1.1 队列的基本操作 140
5.1.2 用数组来实现队列 140
5.1.3 用链表来实现队列 143
5.2 队列的应用 145
5.2.1 环形队列 145
5.2.2 双向队列 149
5.2.3 优先队列 152
本章习题 153
第6章 树结构 154
本章习题 204
第7章 图结构 208
本章习题 252
第8章 排序 256
本章习题 295
第9章 查找 298
本章习题 321
附录A Java开发环境简介 323
附录B 课后习题与参考答案 333
附录C 数据结构专有名词索引
(电子版见下载) 379