出版说明
前言
第1章 绪论
1.1 引言
1.1.1 为什么要学习数据结构
1.1.2 数据结构课程的内容
1.2 数据结构的概念
1.2.1 基本概念和术语
1.2.2 抽象数据类型
1.3 算法
1.3.1 算法及其特征
1.3.2 算法的描述
1.3.3 算法的性能分析
1.4 小结
习题
第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.3.6 链表应用举例
2.4 顺序表和链表的比较
2.5 小结
习题
第3章 栈和队列
3.1 栈
3.1.1 栈的定义及基本运算
3.1.2 栈的存储及运算实现
3.2 栈的应用举例
3.3 队列
3.3.1 队列的定义及基本运算
3.3.2 队列的存储及运算实现
3.4 队列的应用举例
3.5 小结
习题
第4章 字符串及线性结构的扩展
4.1 字符串
4.1.1 字符串的基本概念
4.1.2 顺序串
4.1.3 模式匹配
4.2 数组
4.2.1 数组的逻辑结构及内存映象
4.2.2 特殊矩阵
4.2.3 稀疏矩阵
4.3 广义表
4.3.1 广义表的逻辑结构
4.3.2 广义表的存储
4.4 小结
习题
第5章 树结构
5.1 二叉树
5.1.1 二叉树的概念
5.1.2 二叉树的主要性质
5.1.3 二叉树的存储
5.1.4 二叉树基本运算的实现
5.2 二叉树的遍历
5.2.1 以递归方法实现二叉树的3种遍历
5.2.2 以非递归方法实现二叉树的3种遍历
5.2.3 按层次遍历二叉树
5.3 二叉树遍历的应用
5.3.1 构造二叉树的二叉链表存储
5.3.2 由遍历序列恢复二叉树
5.3.3 在二叉树中查找值为x的数据元素
5.3.4 统计给定二叉树中叶子结点的数目
5.3.5 表达式运算
5.4 线索二叉树
5.4.1 线索二叉树的定义及结构
5.4.2 线索二叉树的构建及遍历
5.5 哈夫曼树及哈夫曼编码
5.5.1 问题的引入
5.5.2 哈夫曼树
5.5.3 哈夫曼树的构造
5.5.4 哈夫曼编码
5.6 树
5.6.1 树的概念
5.6.2 树的表示
5.6.3 树的存储
5.7 树和森林与二叉树之间的转换
5.7.1 树转换为二叉树
5.7.2 森林转换为二叉树
5.7.3 二叉树转换为树和森林
5.8 树或森林的遍历
5.8.1 树的遍历
5.8.2 森林的遍历
5.9 树的应用
5.9.1 判定树
5.9.2 集合的表示
5.9.3 等价问题
5.10 小结
习题
第6章 图结构
6.1 图的基本概念
6.1.1 图的定义和术语
6.1.2 图的基本操作
6.2 图的存储方法
6.2.1 邻接矩阵
6.2.2 邻接表
6.2.3 十字链表
6.2.4 邻接多重表
6.3 图的遍历
6.3.1 深度优先搜索
6.3.2 广度优先搜索
6.3.3 应用图的遍历判定图的连通性
6.4 生成树和最小生成树
6.4.1 生成树和生成森林
6.4.2 最小生成树
6.4.3 构造最小生成树的Prim算法
6.4.4 构造最小生成树的Kruskal算法
6.5 有向无环图及其应用
6.5.1 有向无环图的概念
6.5.2 AOV网与拓扑排序
6.5.3 AOE网与关键路径
6.6 最短路径
6.6.1 从一个源点到其他各点的最短路径
6.6.2 每一对顶点之间的最短路径——弗洛伊德算法
6.7 小结
习题
第7章 查找
7.1 基本概念
7.2 线性表查找
7.2.1 顺序查找
7.2.2 在顺序存储的有序表上查找
7.3 树表查找
7.3.1 二叉排序树
7.3.2 平衡二叉树
7.3.3 B树和B+树
7.4 散列表查找
7.4.1 散列表
7.4.2 常用的散列函数
7.4.3 处理冲突的方法及散列表的构造
7.4.4 散列表上的查找
7.4.5 散列表上的删除
7.5 小结
习题
第8章 排序
8.1 基本概念
8.2 插入排序
8.2.1 直接插入排序
8.2.2折半插入排序
8.2.3 表插入排序及重排
8.2.4 希尔排序
8.3 交换排序
8.3.1 冒泡排序
8.3.2 快速排序
8.4 选择排序
8.4.1 简单选择排序
8.4.2 树结构选择排序
8.4.3 堆排序
8.5 归并排序
8.6 基数排序
8.6.1 多关键码排序
8.6.2 链式基数排序
8.7 外部排序
8.7.1 外部排序的方法
8.7.2 多路平衡归并的实现
8.8 小结
习题
参考文献