内容简介
第1章 概论
1.1什么是数据结构
1.2数据结构的基本概念和术语
1.3抽象数据类型及其表示与实现
1.4算法和算法分析
1.4.1算法的定义及特性
1.4.2算法的设计要求
1.4.3算法效率的衡量方法及其准则
1.4.4算法的存储空间需求
1.5类C语言描述
习题
第2章 线性表
2.1线性表的类型定义
2.1.1线性表的概念
2.1.2线性表的抽象数据类型
2.2线性表的顺序表示和实现
2.2.1线性表的顺序表示
2.2.2顺序表上基本运算的实现
2.3线性表的链式表示和实现
2.3.1单链表的表示
2.3.2单链表操作的实现
2.4线性表实现方法的比较
2.5循环链表
2.6双链表
2.7静态链表
2.8算法设计举例
习题
第3章 栈和队列
3.1栈
3.1.1栈的类型定义
3.1.2栈的表示和实现
3.2栈的应用举例
3.3栈与递归
3.3.1如何实现递归
3.3.2采用递归算法解决的问题
3.3.3将递归转换为非递归
3.4队列
3.4.1队列的类型定义
3.4.2循环队列——队列的顺序存储结构
3.4.3链队列——队列的链式表示和实现
3.5算法设计举例
习题
第4章 串
4.1串的类型定义
4.2串的表示和实现
4.2.1串的顺序存储结构
4.2.2串的链式存储结构
4.3串的模式匹配
4.3.1朴素的模式匹配算法
4.3.2 KMP算法
4.4串的应用举例
4.5算法设计举例
习题
第5章 数组和广义表
5.1数组的概念及其基本操作
5.2数组的顺序存储
5.3矩阵的压缩存储
5.3.1特殊矩阵
5.3.2稀疏矩阵
5.4广义表
5.4.1广义表的定义
5.4.2广义表的存储结构
5.5算法设计举例
习题
第6章 树
6.1树的概念及操作
6.2二叉树
6.2.1二叉树的概念及操作
6.2.2二叉树的性质
6.2.3二叉树的存储结构
6.3二叉树的遍历
6.4线索二叉树
6.4.1线索二叉树的概念
6.4.2遍历线索二叉树
6.5树和森林
6.5.1树的存储结构
6.5.2森林、树、二叉树的相互转换
6.5.3树和森林的遍历
6.6哈夫曼树及其应用
6.6.1最优二叉树(哈夫曼树)
6.6.2哈夫曼编码
6.7算法设计举例
习题
第7章 图
7.1图的定义和术语
7.2图的存储结构
7.2.1邻接矩阵表示法(数组表示法)
7.2.2邻接表
7.2.3十字链表
7.2.4邻接多重表
7.3图的遍历
7.3.1深度优先遍历
7.3.2广度优先遍历
7.4图的连通性问题
7.4.1图的连通分量和生成树
7.4.2最小生成树
7.5有向无环图及其应用
7.5.1拓扑排序
7.5.2关键路径
7.6最短路径
7.6.1从某个源点到其他各顶点的最短路径
7.6.2每一对顶点之间的最短路径
7.7算法设计举例
习题
第8章 动态存储管理
8.1概述
8.1.1问题的提出
8.1.2内存分配处理
8.2可利用空间表及分配办法
8.2.1可利用空间表的三种不同的结构形式
8.2.2可利用空间表的三种分配策略
8.3边界标识法
8.3.1可利用空间表的结构
8.3.2分配算法
8.3.3回收算法
8.4伙伴系统
8.4.1可利用空间表的结构
8.4.2分配算法
8.4.3回收算法
习题
第9章 查找
9.1静态查找表上的查找
9.1.1顺序表的查找
9.1.2折半查找
9.1.3斐波那契查找
9.1.4插值查找
9.1.5分块查找
9.2动态查找表上的查找
9.2.1二叉排序树
9.2.2平衡二叉树
9.2.3 B-树
9.2.4键树
9.3散列表上的查找
9.3.1散列表的概念
9.3.2构造散列函数的方法
9.3.3解决冲突的方法
9.3.4散列表的查找性能分析
9.3.5闭散列法与开散列法的比较
9.4算法设计举例
习题
第10章 排序
10.1概述
10.2插入排序
10.2.1直接插入排序
10.2.2折半插入排序
10.2.3二路插入排序
10.2.4表插入排序
10.2.5希尔排序
10.3交换排序
10.3.1起泡排序
10.3.2快速排序
10.4选择排序
10.4.1直接选择排序
10.4.2树形选择排序
10.4.3堆排序
10.5归并排序
10.6分配排序
10.7各种内部排序方法的比较
10.8外部排序
10.8.1文件管理
10.8.2外部排序的方法
10.8.3多路平衡归并排序
10.8.4置换选择排序
10.8.5最佳归并树
10.8.6磁带排序
10.9算法设计举例
习题
第11章 文件
11.1基本概念
11.2顺序文件
11.3索引文件
11.4索引顺序文件
11.4.1 ISAM文件
11.4.2 VSAM文件
11.5散列文件
11.6多关键字文件
11.6.1多重表文件
11.6.2倒排文件
习题
附录 上机实验题目
参考文献