数据结构教程

数据结构和算法数据结构研究的是数据之间的关系,再进一步说,它研究的是多份数据之间的分布、排列和勾连的关系,以及在此基础之上如何进行高效的增删改查操作。

数据结构是计算机专业的基础课程,也是所有程序员的内功心法;不懂数据结构就是写代码的农民,了解数据结构才能成为行业专家。

六年创作,三次迭代,千般打磨,成就了今天这套精品数据结构教程。它有以下几个亮点:
  • 通俗易懂,深入浅出,这是我们创作教程的招牌动作;
  • 教程包含大量的练习题/小项目/小游戏,数量不少于 20 个;
  • 教程包含 500+ 张优质图片,其中不少是 gif 动图;
  • 不要伪代码,不要代码片段,我们直接提供了完整代码,复制到编译器一键运行。

为了降低阅读门槛,本教程所有代码都基于C语言编写。

关于本教程

开始创作时间:2017-10-03

最后迭代时间:2024-01-10

当前版本:Version 3.5

字数统计:26.4W 字

版权证书:Version 1.0    Version 2.0    Version 3.0    Version 3.5

第1章 数据结构入门
1.数据结构是什么
2.数据的逻辑结构和存储结构
3.数据结构到底学什么
4.时间复杂度和空间复杂度
5.数据结构与算法的区别和联系
6.数据结构如何自学,效率更高?
7.数学不好,对学数据结构有影响吗?
8.学好数据结构,你已然超越了99%的程序员!
第2章 线性表
1.线性表(线性存储结构)是什么
2.顺序表(顺序存储结构)是什么
3.顺序表的基本操作
4.顺序表与数组根本不是一码事!
5.链表(链式存储结构)是什么
6.单链表的基本操作
7.顺序表和链表有哪些不同?
8.删除链表倒数第N个结点(3种实现方案)
9.实现单链表的反转(4种算法)
10.判断两个单链表相交(3种算法)
11.存储结构和存取结构,完全不是一码事!
12.静态链表是什么
13.静态链表的基本操作
14.静态链表和动态链表的区别
15.双向链表是什么
16.双向链表的基本操作
17.双向链表实现贪吃蛇游戏(含源码)
18.循环链表实现约瑟夫环
19.双向循环链表是什么
20.判断链表中有环(2种算法)
21.线性表实现俄罗斯轮盘赌游戏
第3章 栈和队列
1.栈是什么
2.顺序栈的基本操作(入栈和出栈)
3.链栈的基本操作(入栈和出栈)
4.递归实现栈的逆序(两种解决方案)
5.栈实现进制转换器(C语言实现)
6.栈解决括号匹配问题(C语言实现)
7.栈结构求表达式的值(C语言实现)
8.队列是什么
9.顺序队列的基本操作(入队和出队)
10.循环队列:更高级的顺序队列
11.链式队列的基本操作(入队和出队)
12.队列实现停车场管理系统(含C语言源码)
13.队列实现“推小车”扑克牌游戏(含C语言源码)
14.用两个栈实现一个队列
15.用两个队列实现一个栈
16.为什么说栈和队列是线性存储结构?
第4章 字符串
1.串是什么
2.串的定长顺序存储结构
3.串的堆分配存储结构
4.串的块链存储结构
5.BF算法(模式匹配算法)
6.KMP算法(快速模式匹配算法)
7.继续优化KMP算法,效率有质的提升!
8.钻牛角尖:为什么KMP算法的主串指针不用回退?
9.串存储结构实现字符过滤系统(含C语言源码)
第5章 数组和广义表
1.数组是什么
2.数组的顺序存储结构
3.矩阵(稀疏矩阵)压缩存储
4.三元组顺序表存储稀疏矩阵
5.行逻辑链接的顺序表存储稀疏矩阵
6.十字链表法存储稀疏矩阵
7.矩阵(稀疏矩阵)的转置算法
8.稀疏矩阵的快速转置算法
9.行逻辑链接的顺序表实现矩阵乘法
10.十字链表实现矩阵加法
11.广义表是什么
12.广义表的存储结构(2种)
13.广义表的深度和长度
14.广义表的复制(C语言实现)
第6章 树存储结构
1.树存储结构是什么
2.什么是二叉树
3.二叉树的顺序存储结构
4.二叉树的链式存储结构
5.二叉树的4种遍历算法
6.二叉树的先序遍历算法(递归和非递归)
7.二叉树的中序遍历算法(递归和非递归)
8.二叉树的后序遍历算法(递归和非递归)
9.二叉树的层次遍历
10.线索二叉树:遍历效率更高的二叉树
11.双向线索二叉树:更高级的线索二叉树
12.树的双亲表示法
13.树的孩子表示法
14.树的孩子兄弟表示法
15.利用孩子兄弟表示法将森林转变成二叉树
16.哈夫曼树(最优二叉树)是什么
17.哈夫曼编码(C语言实现)
18.回溯算法详解
19.回溯算法解决八皇后问题(C语言实现)
20.回溯算法实现移动迷宫小游戏(初级版)
21.思考:n个结点最多可以构建多少棵树?
第7章 图存储结构
1.图(图存储结构)是什么
2.什么是连通图(强连通图)
3.什么是生成树(生成森林)
4.图的顺序存储结构
5.图的邻接表存储结构
6.图的十字链表存储结构
7.图的邻接多重表存储结构
8.深度优先搜索(DFS)算法
9.广度优先搜索(BFS)算法
10.深度优先生成树和森林(C语言实现)
11.广度优先生成树和森林(C语言实现)
12.最小生成树是什么
13.Prim算法(普里姆算法)求最小生成树
14.Kruskal算法(克鲁斯卡尔算法)求最小生成树
15.重连通图是什么
16.拓扑排序算法(C语言实现)
17.关键路径是什么(C语言实现)
18.最短路径是什么
19.Dijkstra算法(迪杰斯特拉算法)查找最短路径
20.Floyd算法(弗洛伊德算法)查找最短路径
21.最短路径算法实现移动迷宫游戏(升级版)
第8章 查找算法
1.查找表是什么
2.顺序查找算法
3.二分查找(折半查找)算法详解
4.分块查找算法
5.静态树表查找算法
6.二叉排序树(二叉查找树)是什么
7.平衡二叉树(AVL树)是什么
8.红黑树(更高级的二叉查找树)
9.B-树是什么
10.B+树是什么
11.键树查找法(双链树和字典树)
12.哈希表(散列表)是什么
13.哈希查找算法
第9章 排序算法
1.插入排序算法
2.折半插入排序算法
3.2路插入排序算法详解
4.表插入排序算法
5.希尔排序算法(缩小增量排序)
6.冒泡排序(起泡排序)算法
7.快速排序算法(QSort,快排)
8.简单选择排序算法
9.树形选择排序(锦标赛排序)算法
10.堆排序算法
11.归并排序算法
12.基数排序算法详解
13.对内部排序算法的总结
第10章 外部排序算法
1.什么是外部排序
2.多路平衡归并排序算法(胜者树、败者树)
3.置换选择排序算法
4.最佳归并树是什么
第11章 动态内存管理
1.什么是动态内存管理
2.边界标识法管理动态内存
3.伙伴系统管理动态内存
4.无用单元收集(垃圾回收机制)
5.内存紧缩(内存碎片化处理)

添加微信咨询 扫码添加管理员微信 扫码添加管理员微信
微信ID:biancheng_yan