第1章 绪论 1
1.1数据结构课程的地位 1
1.2数据结构的定义和基本术语 2
1.2.1数据结构研究的内容及定义 2
1.2.2基本术语 4
1.3数据的逻辑结构和存储结构 5
1.3.1逻辑结构 5
1.3.2存储结构 5
1.4算法和算法分析 7
1.4.1算法 7
1.4.2算法分析 8
本章小结 9
综合训练 10
第2章 线性表 17
2.1线性表的定义及逻辑结构 17
2.2顺序存储结构 19
2.2.1顺序表 19
2.2.2顺序表中基本操作的实现 20
2.3链式存储结构 26
2.3.1单链表 27
2.3.2单链表中基本操作的实现 28
2.3.3循环链表 34
2.3.4双向链表 35
2.4应用:一元多项式的表示和相加 37
实验一 线性表的顺序存储 39
实验二 单链表的基本操作 43
实验三 链表综合操作 51
本章小结 54
综合训练 55
第3章 栈和队列 65
3.1栈 65
3.1.1栈的定义 65
3.1.2顺序栈的存储结构和操作的实现 66
3.1.3链栈的存储结构和操作的实现 68
3.2栈的应用 69
3.3队列 73
3.3.1队列的定义 73
3.3.2链队列的存储结构和操作的实现 74
3.3.3顺序队列的存储结构和操作的实现 76
3.4队列的应用 79
实验四 栈和队列的表示与实现 79
实验五 栈和队列的应用 82
本章小结 84
综合训练 84
第4章串 91
4.1串的定义 91
4.1.1基本术语 91
4.1.2基本运算 92
4.2串的存储结构 93
4.2.1定长顺序存储 93
4.2.2堆分配存储 94
4.2.3块链存储 94
4.3串的基本操作的实现 95
本章小结 96
综合训练 96
第5章 数组 98
5.1数组的定义 98
5.2数组的顺序存储结构 99
5.3矩阵的压缩存储 100
5.3.1对称矩阵 100
5.3.2三角矩阵 101
5.3.3对角矩阵 102
5.3.4稀疏矩阵 102
本章小结 105
综合训练 106
第6章 树和二叉树 110
6.1树的定义和基本术语 110
6.2二叉树 111
6.2.1二叉树的定义和相关概念 111
6.2.2二叉树的性质 112
6.2.3二叉树的存储结构 113
6.3遍历二叉树和线索二叉树 115
6.3.1遍历二叉树 115
6.3.2线索二叉树 118
6.4树和森林 120
6.4.1树的存储结构 120
6.4.2森林与二叉树的转换 122
6.4.3树和森林的遍历 123
6.5哈夫曼树及其应用 124
6.5.1最优二叉树 124
6.5.2哈夫曼编码 125
实验六 树与二叉树 127
本章小结 128
综合训练 129
第7章图 133
7.1图的定义和基本术语 133
7.2图的存储结构 135
7.2.1邻接矩阵表示法(数组表示法) 135
7.2.2邻接表表示法 137
7.3图的遍历 139
7.3.1深度优先搜索 139
7.3.2广度优先搜索 139
7.4图的应用 140
7.4.1最小生成树 140
7.4.2拓扑排序 142
7.4.3关键路径 143
7.4.4最短路径 146
实验七 图的操作 148
本章小结 148
综合训练 149
第8章 查找 153
8.1查找的基本概念 153
8.2基于线性表的查找 155
8.2.1顺序查找 155
8.2.2折半查找 157
8.2.3索引查找 161
8.3基于树的查找 162
8.3.1二叉排序树 162
8.3.2平衡二叉树 168
8.3.3 B-树 171
实验八 查找 172
8.4哈希表 174
8.4.1哈希表的定义 174
8.4.2哈希函数的构造方法 175
8.4.3处理冲突的方法 176
8.4.4哈希表的查找分析 177
实验九 哈希表的查找 179
本章小结 180
综合训练 180
第9章 内部排序 184
9.1概述 184
9.1.1排序的定义 184
9.1.2内部排序和外部排序 184
9.2插入排序 185
9.2.1直接插入排序 185
9.2.2希尔排序 187
9.3交换排序 188
9.3.1冒泡排序 189
9.3.2快速排序 191
9.4选择排序 193
9.4.1简单选择排序 194
9.4.2堆排序 196
9.5归并排序 200
9.6基数排序 202
9.6.1多关键字排序 202
9.6.2链式基数排序 202
9.7各种排序方法的比较 205
实验十 内部排序 206
本章小结 208
综合训练 209
第10章 课程设计 214
10.1目的和题目 214
10.2考核方式及报告要求 214
附录A课程设计报告模板 216
附录B模拟试题 237
参考文献 240