数据结构教程
数据结构研究的是数据之间的关系,再进一步说,它研究的是多份数据之间的分布、排列和勾连的关系,以及在此基础之上如何进行高效的增删改查操作。
数据结构是计算机专业的基础课程,也是所有程序员的内功心法;不懂数据结构就是写代码的农民,了解数据结构才能成为行业专家。
六年创作,三次迭代,千般打磨,成就了今天这套精品数据结构教程。它有以下几个亮点:
数据结构是计算机专业的基础课程,也是所有程序员的内功心法;不懂数据结构就是写代码的农民,了解数据结构才能成为行业专家。
六年创作,三次迭代,千般打磨,成就了今天这套精品数据结构教程。它有以下几个亮点:
- 通俗易懂,深入浅出,这是我们创作教程的招牌动作;
- 教程包含大量的练习题/小项目/小游戏,数量不少于 20 个;
- 教程包含 500+ 张优质图片,其中不少是 gif 动图;
- 不要伪代码,不要代码片段,我们直接提供了完整代码,复制到编译器一键运行。
为了降低阅读门槛,本教程所有代码都基于C语言编写。
关于本教程
开始创作时间:2017-10-03
最后迭代时间:2024-01-10
当前版本:Version 3.5
字数统计:26.4W 字
- 第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.对内部排序算法的总结