第1章 绪论 1
1.1软件开发过程 1
1.1.1软件生命周期 1
1.1.2软件开发模型 2
1.2数据结构的定义 2
1.2.1什么是数据结构 2
1.2.2算法及其分析 8
1.2.3数据结构项目设计 11
1.3用C#设计数据结构实践项目 13
1.3.1用C#设计数据结构项目的基本方法 13
1.3.2窗体设计及窗体间的数据传递 15
1.3.3文件操作 33
第2章 线性表 36
2.1线性表的定义 36
2.2线性表的顺序存储结构 37
2.2.1线性表的顺序存储结构——顺序表 37
2.2.2顺序表实践项目及其设计 38
2.3线性表的链式存储结构 47
2.3.1单链表 48
2.3.2单链表实践项目及其设计 49
2.3.3双链表 58
2.3.4双链表实践项目及其设计 60
2.3.5循环链表 64
2.3.6循环单链表实践项目及其设计 65
2.3.7循环双链表实践项目及其设计 72
2.4线性表的应用 80
2.4.1线性表应用方法 80
2.4.2线性表实践项目及其设计 80
第3章 栈和队列 91
3.1栈 91
3.1.1栈的定义 91
3.1.2栈的顺序存储结构——顺序栈 91
3.1.3顺序栈实践项目及其设计 92
3.1.4栈的链式存储结构——链栈 96
3.1.5链栈实践项目及其设计 96
3.1.6栈的应用实践项目——简单算术表达式求值 98
3.1.7栈的应用实践项目——用栈求解迷宫问题 106
3.2队列 114
3.2.1队列的定义 114
3.2.2队列的顺序存储结构——顺序队 115
3.2.3顺序队实践项目及其设计 115
3.2.4队列的链式存储结构——链队 124
3.2.5链队实践项目及其设计 125
3.2.6队列的应用——用队列求解迷宫问题 127
3.2.7队列的应用——用队列求解病人排队看病问题 130
第4章 串 135
4.1串的基本概念 135
4.2串的存储结构 136
4.2.1串的顺序存储结构——顺序串 136
4.2.2顺序串实践项目及其设计 136
4.2.3串的链式存储结构——链串 144
4.2.4链串实践项目及其设计 144
4.3串的模式匹配 148
4.3.1模式匹配的概念 148
4.3.2串模式匹配实践项目及其设计 148
第5章 数组和广义表 156
5.1数组 156
5.1.1数组及其存储结构 156
5.1.2特殊矩阵的压缩存储 157
5.1.3数组实践项目及其设计 158
5.2稀疏矩阵 162
5.2.1稀疏矩阵的存储结构 163
5.2.2稀疏矩阵实践项目及其设计 164
5.3递归 171
5.3.1递归及其算法设计方法 171
5.3.2递归实践项目及其设计 172
5.4广义表 180
5.4.1广义表及其存储结构 180
5.4.2广义表实践项目及其设计 181
第6章 树和二叉树 187
6.1树 187
6.1.1树的相关概念 187
6.1.2树的实践项目及其设计 191
6.2二叉树 197
6.2.1二叉树的相关概念 197
6.2.2二叉树实践项目及其设计 204
6.3构造二叉树 218
6.3.1构造二叉树的过程 218
6.3.2构造二叉树实践项目及其设计 220
6.4线索二叉树 223
6.4.1构造和遍历线索二叉树 223
6.4.2线索二叉树实践项目及其设计 225
6.5哈夫曼树 228
6.5.1哈夫曼树的相关概念 228
6.5.2哈夫曼树实践项目及其设计 229
6.6树形结构的应用 233
6.6.1树形结构的应用方法 233
6.6.2树形结构应用实践项目及其设计 234
第7章 图 243
7.1图及其存储结构 243
7.1.1图的基本概念 243
7.1.2图的存储结构 244
7.1.3图基本运算实践项目及其设计 246
7.2图的遍历 252
7.2.1图的遍历方法 253
7.2.2图遍历实践项目及其设计 254
7.3图的应用 270
7.3.1生成树和最小生成树 270
7.3.2最短路径 271
7.3.3拓扑排序 273
7.3.4 AOE网与关键路径 274
7.3.5图应用实践项目及其设计 275
7.4图的综合应用 293
7.4.1图综合应用方法 293
7.4.2图综合应用实践项目及其设计 293
第8章 查找 301
8.1查找的基本概念 301
8.2线性表的查找 302
8.2.1线性表的各种查找方法 302
8.2.2线性表实践项目及其设计 304
8.3树表的查找 311
8.3.1二叉排序树及其查找方法 311
8.3.2二叉排序树实践项目及其设计 313
8.4哈希表查找 319
8.4.1哈希表的基本概念 319
8.4.2哈希表查找实践项目及其设计 322
第9章 内排序 333
9.1排序的基本概念 333
9.2插入排序 334
9.2.1常用的插入排序方法 334
9.2.2插入排序实践项目及其设计 336
9.3交换排序 342
9.3.1常用的交换排序方法 342
9.3.2交换排序实践项目设计 344
9.4选择排序 347
9.4.1常用的选择排序方法 347
9.4.2选择排序实践项目设计 348
9.5归并排序 351
9.5.1常用的归并排序方法 351
9.5.2归并排序实践项目设计 352
9.6基数排序 355
9.6.1基数排序方法 355
9.6.2基数排序实践项目设计 356
9.7各种内排序方法比较 359
9.7.1各种内排序方法的比较和选择 359
9.7.2内排序方法比较实践项目设计 361
9.8内排序的应用 363
9.8.1内排序应用方法 363
9.8.2内排序应用实践项目设计 363
第10章 外排序 368
10.1外排序概述 368
10.2磁盘排序 368
10.2.1磁盘排序过程 368
10.2.2磁盘排序实践项目设计 372
参考文献 387