目录
扫一扫
源码下载
第1章绪论/
1.1什么是数据结构/
1.1.1数据结构的定义/
1.1.2数据的逻辑结构/
1.1.3数据的存储结构/
1.1.4数据的运算/
1.1.5数据结构和数据类型/
1.2算法及其描述/
1.2.1什么是算法/
1.2.2算法描述/
1.3算法分析/
1.3.1算法设计的要求/
1.3.2算法的时间性能分析/
1.3.3算法的存储空间分析/
1.4数据结构的目标/
1.5练习题/
1.6实验题/
1.6.1上机实验题/
1.6.2在线编程题/
第2章线性表/
2.1线性表的定义/
2.1.1什么是线性表/
2.1.2线性表的抽象数据类型描述/
2.2线性表的顺序存储结构/
2.2.1线性表的顺序存储结构——顺序表/
2.2.2线性表的基本运算算法在顺序表中的实现/
2.2.3顺序表的应用算法设计示例/
2.2.4顺序表容器——ArrayList/
2.3线性表的链式存储结构/
2.3.1线性表的链式存储结构——链表/
2.3.2单链表/
2.3.3单链表的应用算法设计示例/
2.3.4双链表/
2.3.5双链表的应用算法设计示例/
2.3.6循环链表/
2.3.7链表容器——LinkedList/
2.4顺序表和链表的比较/
2.5线性表的应用/
2.5.1求解两个多项式相加问题的描述/
2.5.2采用顺序存储结构求解/
2.5.3采用链式存储结构求解/
2.6练习题/
2.7实验题/
2.7.1上机实验题/
2.7.2在线编程题/
第3章栈和队列/
3.1栈/
3.1.1栈的定义/
3.1.2栈的顺序存储结构及其基本运算算法的实现/
3.1.3顺序栈的应用算法设计示例/
3.1.4栈的链式存储结构及其基本运算算法的实现/
3.1.5链栈的应用算法设计示例/
3.1.6Java中的栈容器——StackE/
3.1.7栈的综合应用/
3.2队列/
3.2.1队列的定义/
3.2.2队列的顺序存储结构及其基本运算算法的实现/
3.2.3循环队列的应用算法设计示例/
3.2.4队列的链式存储结构及其基本运算算法的实现/
3.2.5链队的应用算法设计示例/
3.2.6Java中的队列接口——QueueE/
3.2.7队列的综合应用/
*3.2.8双端队列/
3.2.9优先队列/
3.3练习题/
3.4实验题/
3.4.1上机实验题/
3.4.2在线编程题/
第4章串/
4.1串的基本概念/
4.1.1什么是串/
4.1.2串的抽象数据类型/
4.2串的存储结构/
4.2.1串的顺序存储结构——顺序串/
4.2.2串的链式存储结构——链串/
4.3Java中的字符串/
4.3.1String/
4.3.2StringBuffer/
4.4串的模式匹配/
4.4.1BF算法/
4.4.2KMP算法/
4.5练习题/
4.6实验题/
4.6.1上机实验题/
4.6.2在线编程题/
第5章递归/
5.1什么是递归/
5.1.1递归的定义/
5.1.2何时使用递归/
5.1.3递归模型/
5.1.4递归与数学归纳法/
5.1.5递归的执行过程/
5.1.6递归算法的时空分析/
5.2递归算法的设计/
5.2.1递归算法设计的步骤/
5.2.2基于递归数据结构的递归算法设计/
5.2.3基于归纳方法的递归算法设计/
5.3练习题/
5.4实验题/
5.4.1上机实验题/
5.4.2在线编程题/
第6章数组和稀疏矩阵/
6.1数组/
6.1.1数组的基本概念/
6.1.2数组的存储结构/
6.1.3Java中的数组/
6.1.4数组的应用/
6.2特殊矩阵的压缩存储/
6.3稀疏矩阵/
6.3.1稀疏矩阵的三元组表示/
6.3.2稀疏矩阵的十字链表表示/
6.4练习题/
6.5实验题/
6.5.1上机实验题/
6.5.2在线编程题/
第7章树和二叉树/
7.1树/
7.1.1树的定义/
7.1.2树的逻辑结构表示方法/
7.1.3树的基本术语/
7.1.4树的性质/
7.1.5树的基本运算/
7.1.6树的存储结构/
7.2二叉树/
7.2.1二叉树的概念/
7.2.2二叉树的性质/
7.2.3二叉树的存储结构/
7.2.4二叉树的递归算法设计/
7.2.5二叉树的基本运算及其实现/
7.3二叉树的先序、中序和后序遍历/
7.3.1二叉树遍历的概念/
7.3.2先序、中序和后序遍历递归算法/
7.3.3递归遍历算法的应用/
*7.3.4先序、中序和后序遍历非递归算法/
7.4二叉树的层次遍历/
7.4.1层次遍历过程/
7.4.2层次遍历算法设计/
7.4.3层次遍历算法的应用/
7.5二叉树的构造/
7.5.1由先序/中序序列或后序/中序序列构造二叉树/
*7.5.2序列化和反序列化/
7.6线索二叉树/
7.6.1线索二叉树的定义/
7.6.2线索化二叉树/
7.6.3遍历线索二叉树/
7.7哈夫曼树/
7.7.1哈夫曼树的定义/
7.7.2哈夫曼树的构造算法/
7.7.3哈夫曼编码/
7.8二叉树与树、森林之间的转换/
7.8.1树到二叉树的转换及还原/
7.8.2森林到二叉树的转换及还原/
*7.9树算法设计和并查集/
7.9.1树算法设计/
7.9.2并查集/
7.10练习题/
7.11实验题/
7.11.1上机实验题/
7.11.2在线编程题/
第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.3.4非连通图的遍历/
8.3.5图遍历算法的应用/
*8.3.6求有向图中强连通分量的Tarjan算法/
8.4生成树和最小生成树/
8.4.1生成树和最小生成树的概念/
8.4.2Prim算法/
8.4.3Kruskal算法/
8.5最短路径/
8.5.1最短路径的概念/
8.5.2Dijkstra算法/
8.5.3Floyd算法/
8.6拓扑排序/
8.6.1什么是拓扑排序/
8.6.2拓扑排序算法设计/
*8.6.3逆拓扑序列和非递归深度优先遍历/
8.7AOE网与关键路径/
8.7.1什么是AOE网和关键路径/
8.7.2求AOE网中关键路径的算法/
8.8练习题/
8.9实验题/
8.9.1上机实验题/
8.9.2在线编程题/
第9章查找/
9.1查找的基本概念/
9.2线性表的查找/
9.2.1顺序查找/
9.2.2折半查找/
9.2.3索引存储结构和分块查找/
9.3树表的查找/
9.3.1二叉排序树/
9.3.2平衡二叉树/
*9.3.3Java中的TreeMap和TreeSet集合/
9.3.4B树/
9.3.5B+树/
9.4哈希表的查找/
9.4.1哈希表的基本概念/
9.4.2哈希函数的构造方法/
9.4.3哈希冲突的解决方法/
9.4.4哈希表的查找及性能分析/
*9.4.5Java中的HashMap和HashSet集合/
9.5练习题/
9.6实验题/
9.6.1上机实验题/
9.6.2在线编程题/
第10章排序/
10.1排序的基本概念/
10.2插入排序/
10.2.1直接插入排序/
10.2.2折半插入排序/
10.2.3希尔排序/
10.3交换排序/
10.3.1冒泡排序/
10.3.2快速排序/
10.4选择排序/
10.4.1简单选择排序/
10.4.2堆排序/
10.4.3堆数据结构/
10.5归并排序/
10.5.1自底向上的二路归并排序/
10.5.2自顶向下的二路归并排序/
10.6基数排序/
10.7各种内排序方法的比较和选择/
10.8外排序/
10.8.1生成初始归并段的方法/
10.8.2多路归并方法/
10.9练习题/
10.10实验题/
10.10.1上机实验题/
10.10.2在线编程题/
参考文献/