图书目录

目录

第1章数据结构的分类和基本运算

1.1数据的逻辑结构

1.2数据的存储结构

1.3数据结构的基本运算

第2章递归

2.1递归调用

2.2递归方式打印九九乘法表

2.3舍罕王赏麦

2.4递归遍历文件

2.5递归实现斐波那契数列

2.6循环实现斐波那契数列

2.7兔子繁殖问题

第3章栈和队列

3.1栈结构

3.2用栈做十进制与二进制的转换

3.3最小栈

3.4队列

3.5两个栈实现一个队列

3.6以递归方式反转一个栈

3.7递归加栈实现汉诺塔

第4章链表

4.1链表结构

4.2单向链表

4.2.1单向链表的追加和遍历

4.2.2单向链表的随机访问

4.2.3单向链表的随机插入

4.2.4单向链表的随机删除

4.2.5从尾到头打印单向链表

4.2.6反转一个单向链表

4.2.7反转单向链表中索引n~m处节点

4.2.8合并多个链表

4.2.9合并两个有序链表

4.2.10相交链表

4.2.11判断两个链表是否相交

4.2.12构造带环的单向链表

4.2.13判断链表是否有环并找出环的闭合点

4.3单向循环链表

4.3.1单向循环链表的追加和遍历

4.3.2约瑟夫环

4.4双向链表

4.4.1双向链表的追加和遍历

4.4.2双向链表的随机插入和删除

4.4.3双向链表实现插值法排序

4.5双向循环链表

4.5.1双向循环链表的追加和遍历

4.5.2双向循环链表的随机插入和随机删除

第5章数组

5.1数组结构

5.2消除数组中重复元素

5.3求数组中的最大值和次大值

5.4求一个数组的支点元素

5.5求数组的幸运值

5.6在数组中实现二分法查找

5.7求无序数组中最长连续子串的长度

5.8求数组中出现次数超过总数一半的数

5.9环路加油站问题

第6章树结构

6.1树、森林、二叉树

6.2二叉排序树

6.2.1二叉排序树的插入与中序遍历

6.2.2二叉排序树的深度优先遍历和广度优先遍历

6.2.3二叉排序树的前序遍历

6.2.4二叉排序树的后序遍历

6.2.5二叉排序树的广度优先遍历

6.2.6二叉排序树的节点删除

6.2.7二叉排序树的按层遍历

6.2.8求二叉树的最大深度、最小深度

6.2.9求二叉树中任意两个节点之间的最低公共祖先

6.3满二叉树 

6.3.1满二叉树的构建

6.3.2判断一棵二叉树是不是满二叉树

6.4完全二叉树

6.4.1完全二叉树的插入

6.4.2查看完全二叉树

6.4.3判断一棵二叉树是不是完全二叉树

6.5平衡二叉树(AVL树)

6.5.1平衡二叉树的节点插入

6.5.2平衡二叉树的节点删除

6.6红黑树(RBTree)

6.6.1红黑树的插入

6.6.2红黑树的遍历操作

6.6.3红黑树的删除操作

6.6.4完整代码实现

6.6.5红黑树练习题

第7章堆结构

7.1堆

7.2二叉堆

7.2.1二叉堆的插入

7.2.2二叉堆的遍历

7.2.3二叉堆的删除

7.3大(小)顶堆

7.3.1大(小)顶堆的插入

7.3.2大(小)顶堆的堆排序

第8章散列表

8.1散列表(哈希表)

8.2散列函数

8.3求两数组交集

8.48个方向

第9章字典树

9.1字典树结构

9.2字典树的存入

9.3字典树的检索

9.4遍历字典树中的键

第10章图

10.1图结构

10.2图的表示

10.2.1邻接矩阵

10.2.2邻接表

10.2.3邻接矩阵和邻接表的使用场景

10.2.4边的权重

10.3图结构的代码实现

10.3.1邻接矩阵方式

10.3.2邻接表方式

10.4图的遍历

10.4.1图结构的深度优先遍历和广度优先遍历

10.4.2图遍历的代码实现

10.5生成树和最小生成树

10.5.1Prim算法求取最小生成树

10.5.2最小生成树的代码实现

第11章排序算法

11.1排序算法的几个基本概念

11.1.1排序的稳定性和不稳定性

11.1.2排序的时间复杂度

11.1.3排序的空间复杂度

11.2冒泡排序

11.3选择排序

11.4插入排序

11.5希尔排序

11.6归并排序

11.7快速排序

11.8计数排序

11.9桶排序

11.10基数排序

11.1110种常见排序算法的复杂度