第1章 绪论 1
1.1什么是数据结构 1
1.1.1概述 1
1.1.2案例分析 2
1.2基本概念和术语 4
1.3数据结构课程的内容 5
1.3.1数据类型 6
1.3.2抽象数据类型 7
1.4算法和算法分析 7
1.5算法性能分析与度量 8
习题一 10
第2章 线性表 12
2.1线性表的定义及逻辑结构 12
2.2线性表的基本操作 13
2.3线性表的顺序存储结构 14
2.3.1顺序表 14
2.3.2顺序表上基本运算的实现 15
2.3.3案例分析 19
2.4线性表的链式存储结构 23
2.4.1单链表 24
2.4.2单链表上的基本运算 25
2.4.3循环链表 31
*2.4.4双向链表 32
*2.4.5静态链表 33
2.4.6案例分析 34
2.5顺序表和链表的比较 39
习题二 40
第3章 栈和队列 43
3.1栈 43
3.1.1栈的定义及基本运算 43
3.1.2顺序栈 44
3.1.3链栈 46
3.1.4案例分析 47
3.2队列 53
3.2.1队列的定义及基本运算 53
3.2.2队列的顺序存储结构 54
3.2.3队列的链式存储 57
3.2.4案例分析 59
习题三 63
第4章 其他线性数据结构 67
4.1串 67
4.1.1串的定义及基本操作 68
4.1.2串的定长顺序存储结构及基本运算 69
*4.1.3串的堆存储结构 71
4.1.4案例分析 73
4.2多维数组 75
4.2.1数组的定义及基本操作 75
4.2.2数组的内存映像 75
4.2.3案例分析 77
4.3矩阵的压缩存储 78
4.3.1稀疏矩阵的压缩存储 78
4.3.2案例分析 81
4.3.3特殊矩阵的压缩存储 84
习题四 87
第5章 树和二叉树 90
5.1树的定义和基本操作 90
5.1.1树的定义 90
5.1.2基本术语 92
5.1.3树的基本操作 92
5.2二叉树 92
5.2.1二叉树的定义和基本操作 92
5.2.2二叉树的性质 93
5.2.3二叉树的存储 95
5.2.4二叉树的基本操作及实现 98
5.2.5二叉树的遍历方法及递归实现 100
5.2.6二叉树遍历的非递归实现 103
5.2.7由遍历序列恢复二叉树 106
5.3树和森林 108
5.3.1树的表示 108
5.3.2树的存储结构 109
5.3.3树、森林与二叉树的转换 113
5.3.4树和森林的遍历 115
5.4哈夫曼树和判定树 117
5.4.1哈夫曼树的定义与构造方法 117
5.4.2哈夫曼编码 118
5.4.3判定树 119
5.5案例分析 120
习题五 123
第6章图 127
6.1图的定义和术语 127
6.2图的存储结构 131
6.2.1邻接矩阵 131
6.2.2邻接表表示法 133
6.3图的遍历 136
6.3.1深度优先搜索 136
6.3.2广度优先搜索 139
6.4图的应用 141
6.4.1图的连通性 141
*6.4.2生成树和生成森林 143
*6.4.3关节点和重连通分量 145
6.4.4最小生成树 147
6.4.5最短路径 153
*6.4.6 AOV网与拓扑排序 157
6.5案例分析 161
习题六 166
第7章 查找 168
7.1基本概念与术语 168
7.2静态查找表 171
7.2.1静态查找表结构 171
7.2.2顺序查找 171
7.2.3有序表的折半查找 172
7.2.4斐波那契查找 174
7.2.5分块查找 175
7.2.6案例分析 176
7.3动态查找表 179
7.3.1二叉排序树 179
7.3.2案例分析 182
7.4哈希表查找(杂凑法) 186
7.4.1哈希表与哈希方法 186
7.4.2常用的哈希函数 187
7.4.3处理冲突的方法 189
7.4.4哈希表的查找分析 191
习题七 192
第8章 排序 195
8.1基本概念 195
8.2插入排序 196
8.2.1直接插入排序 196
8.2.2希尔排序 196
8.2.3案例分析 197
8.3交换排序 200
8.3.1冒泡排序 200
8.3.2快速排序 202
8.3.3案例分析 202
8.4选择排序 205
8.4.1简单选择排序 205
*8.4.2堆排序 206
8.5二路归并排序 208
8.6基数排序 210
8.6.1多关键码排序 210
8.6.2链式基数排序 211
8.7外排序 214
8.7.1外部排序的方法 214
*8.7.2多路平衡归并的实现 216
习题八 218
上机实训练习 221
第2章上机实训题 221
第3章上机实训题 222
第4章上机实训题 223
第5章上机实训题 224
第6章上机实训题 225
第7章上机实训题 226
第8章上机实训题 226