第1章 绪论
1.1 数据结构的定义
1.2 有关概念和术语
1.3 抽象数据类型
1.3.1 数据类型
1.3.2 抽象数据类型
1.4 算法和算法分析
1.4.1 算法及特性
1.4.2 算法设计的要求
1.4.3 算法描述
1.4.4 算法性能分析与评价
习题1
第2章 线性表
2.1 线性表的逻辑结构
2.1.1 线性表的定义
2.1.2 线性表的基本操作
2.2 线性表的顺序表示和实现
2.2.1 顺序表
2.2.2 顺序表基本运算的实现
2.2.3 顺序表应用举例
2.3 线性表的链式表示和实现
2.3.1 单链表
2.3.2 单链表上基本运算的实现
2.3.3 循环链表
2.3.4 双向链表
2.3.5 单链表应用举例
2.4 顺序表和链表的比较
习题2
第3章 栈和队列
3.1 栈
3.1.1 栈的定义及基本运算
3.1.2 栈的存储结构
3.2 栈的应用举例
3.3 队列
3.3.1 队列的定义及基本运算
3.3.2 队列的存储结构及运算
3.4 队列应用举例
习题3
第4章 串
4.1 串及基本运算
4.1.1 串的基本概念
4.1.2 串的基本运算
4.2 串的定长顺序存储及基本运算
4.2.1 串的定长顺序存储
4.2.2 定长顺序串的基本运算
4.2.3 模式匹配
习题4
第5章 数组、特殊矩阵和广义表
5.1 多维数组
5.1.1 数组的概念
5.1.2 数组的存储结构
5.2 特殊矩阵及压缩存储
5.2.1 对称矩阵
5.2.2 三角矩阵
5.2.3 带状矩阵
5.3 稀疏矩阵
5.3.1 稀疏矩阵的三元组表存储
5.3.2 稀疏矩阵的十字链表存储
5.4 广义表
5.4.1 广义表的定义和基本运算
5.4.2 广义表的存储结构
5.4.3 广义表基本操作的实现
习题5
第6章 树和二叉树
6.1 树的概念与定义
6.1.1 树的定义
6.1.2 树的相关概念
6.2 二叉树
6.2.1 二叉树的定义
6.2.2 二叉树的主要性质
6.3 二叉树的存储结构与基本操作
6.3.1 二叉树的存储
6.3.2 二叉树的基本操作及实现
6.4 二叉树的遍历
6.4.1 二叉树的遍历方法及递归实现
6.4.2 由遍历序列恢复二叉树
6.4.3 二叉树遍历算法的应用
6.5 线索二叉树
6.5.1 线索二叉树的定义及结构
6.5.2 线索二叉树的基本操作实现
6.6 赫夫曼树及应用
6.6.1 赫夫曼树的基本概念
6.6.2 赫夫曼树在编码问题中的应用
习题6
第7章 图
7.1 图的基本概念
7.1.1 图的定义
7.1.2 图的相关术语
7.2 图的存储表示
7.2.1 邻接矩阵
7.2.2 邻接表
7.3 图的遍历
7.3.1 深度优先搜索
7.3.2 广度优先搜索
7.4 生成树和最小生成树
7.4.1 生成树的概念
7.4.2 Prim算法
7.4.3 Kruskal算法
7.5 最短路径
7.5.1 从一个源点到其他各点的最短路径
7.5.2 每一对顶点之间的最短路径
7.6 有向无环图及其应用
7.6.1 AOV网与拓扑排序
7.6.2 AOE网与关键路径
习题7
第8章 查找
8.1 基本概念与术语
8.2 基于线性表的查找
8.2.1 顺序查找法
8.2.2 折半查找
8.2.3 分块查找
8.3 基于树的查找
8.3.1 二叉排序树
8.3.2 平衡二叉树
8.4 哈希表查找
8.4.1 哈希函数的构造
8.4.2 处理冲突的方法
8.4.3 哈希表的查找过程及性能分析
习题8
第9章 内部排序
9.1 基本概念
9.2 插入排序
9.2.1 直接插入排序
9.2.2 折半插入排序
9.2.3 希尔排序
9.3 交换排序
9.3.1 冒泡排序
9.3.2 快速排序
9.4 选择排序
9.4.1 直接选择排序
9.4.2 堆排序
9.5 归并排序
9.6 基数排序
9.6.1 多关键码排序
9.6.2 链式基数排序
9.7 条种内部排序方法的比较
习题9
习题参考答案
附录
程序1 顺序表的运算
程序2 单链表的运算
程序3 两个栈共享空间
程序4 循环队列的入队和出队
程序5 链队列的入队和出队
程序6 数制转换
程序7 二叉树的建立及中序遍历(递归)
程序8 二叉树的建立及中序遍历(非递归)
程序9 二叉查找树的静态查找
程序10 二叉查找树(二叉排序树)的建立及遍历
程序11 折半查找
程序12 直接插入排序和冒泡排序
参考文献