第1章 绪论 1
1.1数据结构的概念 1
1.1.1学习数据结构的目的 1
1.1.2基本概念和术语 2
1.1.3数据结构课程内容体系 4
1.2算法和算法分析 4
1.2.1算法特性 5
1.2.2算法描述 5
1.2.3算法性能分析 5
第2章 线性表 7
2.1线性表的逻辑结构 7
2.1.1线性表的定义 7
2.1.2线性表的基本操作 7
2.2线性表的顺序存储及运算实现 8
2.2.1顺序表 8
2.2.2顺序表上基本运算的实现 9
2.3学生成绩管理系统(顺序表的实现) 14
2.4线性表的链式存储和运算实现 25
2.4.1单链表 25
2.4.2单链表上基本运算的实现 26
2.4.3循环链表 32
2.4.4双向链表 33
2.4.5链表简单应用举例 34
2.5学生成绩管理系统(单链表的实现) 36
第3章 栈和队列 46
3.1栈 46
3.1.1栈的定义及基本运算 46
3.1.2栈的存储结构与运算实现 47
3.2栈的应用 50
3.3队列 52
3.3.1队列的定义及基本运算 52
3.3.2队列的存储实现及运算实现 52
3.4停车场管理系统 58
第4章 数组与矩阵 64
4.1数组 64
4.1.1数组的逻辑结构 64
4.1.2数组的内存映象 64
4.2特殊矩阵的压缩存储 67
4.2.1对称矩阵 67
4.2.2三角矩阵 68
4.2.3带状矩阵 69
4.3稀疏矩阵 70
4.3.1稀疏矩阵的三元组表存储 70
4.3.2稀疏矩阵的十字链表存储 72
第5章 树和二叉树 74
5.1树 74
5.1.1树的定义 74
5.1.2树的逻辑结构表示 74
5.1.3树的基本术语 75
5.2二叉树 76
5.2.1二叉树的定义 76
5.2.2二叉树的性质 76
5.2.3满二叉树和完全二叉树 77
5.2.4二叉树的存储结构 78
5.2.5二叉树的基本运算 80
5.3二叉树的遍历及其应用 82
5.3.1二叉树的遍历 82
5.3.2根据二叉树的遍历构造二叉树 85
5.3.3二叉树的遍历在表达式运算上的应用 86
5.4树和森林 87
5.4.1树的存储结构 87
5.4.2树和森林与二叉树的转换 89
5.4.3树和森林的遍历 91
第6章 树和二叉树的应用 93
6.1二叉排序树和平衡二叉树 93
6.1.1二叉排序树的基本概念 93
6.1.2二叉排序树的基本运算 93
6.1.3平衡二叉排序树(AVL树) 99
6.2堆和堆排序 101
6.2.1堆的定义 101
6.2.2堆排序 102
6.3霍夫曼树及其应用 104
6.3.1最优二叉树(霍夫曼)树 104
6.3.2霍夫曼编码 106
6.3.3霍夫曼树与霍夫曼编码的算法 107
6.4 B-树和B+树 109
6.4.1 B-树及其操作 109
6.4.2 B+树 114
6.5同学录管理系统 115
第7章 图 122
7.1图的定义和术语 122
7.2图的存储表示 125
7.2.1邻接矩阵 125
7.2.2邻接表 127
7.2.3十字链表 130
7.3图的遍历和连通性 131
7.3.1深度优先搜索 132
7.3.2广度优先搜索 134
7.3.3无向图的连通性 135
7.4连通图的最小生成树 135
7.4.1最小生成树的基本概念 135
7.4.2普里姆算法 136
7.4.3克鲁斯卡尔算法 139
7.5最短路径 141
7.5.1从一个源点到其他各点的最短路径 141
7.5.2每一对顶点之间的最短路径 144
7.6有向无环图及拓扑排序 146
7.6.1有向无环图的概念 146
7.6.2有向无环图的拓扑排序 147
7.7 AOE图与关键路径 150
7.7.1 AOE网 150
7.7.2关键路径 151
7.7.3由关键活动确定关键路径 152
7.8校园导游咨询 155
第8章 查找 163
8.1基本概念与术语 163
8.2静态查找表 164
8.2.1静态查找表结构 164
8.2.2顺序查找 165
8.2.3有序表的折半查找 166
8.2.4分块查找 168
8.3哈希查找 169
8.3.1哈希表与哈希方法 169
8.3.2常用构造哈希函数法 170
8.3.3处理冲突的方法 171
8.3.4哈希表的查找分析 173
8.4电话号码查询系统 174
第9章 排序 184
9.1基本概念 184
9.2插入排序 184
9.2.1直接插入排序 184
9.2.2希尔排序 186
9.3交换排序 188
9.3.1冒泡排序 188
9.3.2快速排序 189
9.4简单选择排序 192
9.5二路归并排序 193
9.6基数排序 195
9.7图书管理销售系统 197
参考文献 203