上篇:数据结构课程实践 3
第1章 线性表 3
1.1 内容要点 3
1.1.1 线性表的定义及基本运算 3
1.1.2 线性表的存储结构 4
1.2 线性表的实践 7
1.2.1 顺序表的实践 7
实践一 顺序表的建立 7
实践二 顺序表的插入 9
实践三 顺序表的删除 11
实践四 顺序表的查找 13
1.2.2 链表的实践 15
实践一 单链表的建立 15
实践二 单链表的查找 17
实践三 单链表的插入 19
实践四 单链表的删除 22
实践五 单链表的合并 24
实践六 双向链表的建立及遍历 27
实践七 循环单链表的建立及查找 30
实践八 双向循环链表的建立及插入 32
实践九 双向循环链表的查找及删除 36
第2章 栈和队列 39
2.1 内容要点 39
2.1.1 栈 39
2.1.2 队列 41
2.2 栈的实践 44
实践一 顺序栈的建立 44
实践二 顺序栈的插入 46
实践三 顺序栈的共用 48
实践四 链式栈的建立 52
2.3 队列的实践 55
实践一 顺序循环队列的实现 55
实践二 链队列的实现 58
第3章 串 62
3.1 内容要点 62
3.1.1 串的定义及基本运算 62
3.1.2 串的存储结构 63
3.1.3 串的模式匹配算法 64
3.2 串实践 67
实践一 用定长顺序存储表示的串连接操作 67
实践二 求子串 70
实践三 堆分配存储表示的串操作 72
实践四 串的简单模式匹配 79
实践五 串的改进模式匹配 81
第4章 多维数组、矩阵和广义表 84
4.1 内容要点 84
4.1.1 多维数组 84
4.1.2 特殊矩阵、稀疏矩阵 86
4.1.3 广义表 89
4.2 多维数组、矩阵和广义表实践 92
实践一 数组的顺序表示和实现 92
实践二 稀疏矩阵的转置 97
实践三 稀疏矩阵的求和、求积运算 103
实践四 广义表的递归算法 115
第5章 树与二叉树 123
5.1 内容要点 123
5.1.1 树和森林 123
5.1.2 二叉树 125
5.2 二叉树的实践 130
实践一 二叉树的建立 130
实践二 二叉树的前序遍历 133
实践三 二叉树的中序遍历 134
实践四 二叉树的后序遍历 135
实践五 二叉树的层次遍历 136
实践六 求二叉树的叶子个数 138
实践七 二叉树的复制 140
实践八 二叉排序树的结点删除 142
实践九 线索二叉树的建立及遍历 148
实践十 哈夫曼树的建立 152
第6章 图 156
6.1 内容要点 156
6.1.1 图的定义及基本运算 156
6.1.2 图的存储结构 157
6.1.3 图的遍历 161
6.1.4 图的应用 161
6.2 图的实践 164
6.2.1 图的建立及遍历 164
实践一 无向图的邻接矩阵表示及遍历 164
实践二 有向图的邻接表表示及遍历 171
实践三 有向图的十字链表表示及遍历 178
6.2.2 图的应用实践 186
实践一 构造无向图的生成树 186
实践二 构造无向连通网的最小生成树 191
实践三 有向图的拓扑排序 195
实践四 找最短路径 200
第7章 查找 205
7.1 内容要点 205
7.1.1 顺序查找 205
7.1.2 折半查找 206
7.1.3 分块查找 206
7.1.4 二叉排序树查找 206
7.1.5 平衡二叉树查找 206
7.1.6 哈希(Hash)表查找 207
7.2 查找实践 207
实践一 顺序表的顺序查找 207
实践二 链表的顺序查找 208
实践三 折半查找 210
实践四 分块查找 213
实践五 二叉排序树查找 215
实践六 哈希查找(1) 218
实践七 哈希查找(2) 221
第8章 排序 225
8.1 内容要点 225
8.1.1 排序的基本概念 225
8.1.2 记录序列的存储方式 226
8.2 内部排序 226
8.2.1 插入排序 226
8.2.2 交换排序 227
8.2.3 选择排序 228
8.2.4 归并排序 229
8.2.5 基数排序 229
8.3 排序实践 230
实践一 直接插入排序 230
实践二 折半插入排序 233
实践三 表插入排序 234
实践四 希尔排序 239
实践五 冒泡排序 241
实践六 快速排序 242
实践七 简单选择排序 245
实践八 堆排序 246
实践九 归并排序 248
实践十 链式基数排序 251
下篇:数据结构应用实践 261
第9章 数据结构应用实例 261
9.1 中序表达式的计算 261
9.2 迷宫问题 267
9.3 Josephu环 275
9.4 哈夫曼编码 282
9.5 简单文本编辑器实现 290
9.6 年级学生成绩管理系统 320
参考文献 363