值不值得学:先看它解决什么工作场景
很多上班族和转行者一听到数据结构,第一反应是“我又不搞底层开发,学这有什么用”。其实这门课解决的核心问题很具体:让你在写代码时不再只凭感觉,而是能判断一段逻辑在数据量翻倍时会不会崩。日常场景比如批量处理表格时卡顿、写个查询脚本慢得离谱、或者面对笔试题里的数组链表无从下手,本质都是数据结构没理清。它不教你做页面,也不讲框架,就是帮你把程序运行的骨架弄明白。如果你正卡在“能写增删改查但看不懂稍复杂的逻辑”这一步,这门课就是用来补这个缺口的。
适合什么基础,建议先看哪几块
资料明确以C语言为实现工具,所以你得有基本的C语法底子,至少能看懂指针和结构体,不用精通但别完全陌生。完全没碰过编程的纯小白直接看会吃力,建议先补完循环和函数再回来。按内容编排,建议先重点啃三块:第一是开头的复杂度分析,这是后续所有内容的尺子,不懂时间复杂度后面学啥都像死记硬背;第二是线性表,它是最基础的存储形式,把顺序和链式两种实现彻底弄懂,后面学栈和队列会顺理成章;第三是算法设计要求部分,帮你建立“写完还要评估好坏”的习惯。这三块吃透了,后面的树和图就不会太突兀。
学完能独立做什么,资料怎么配合练习
学完之后,你应该能独立用C语言把常见结构敲出来,比如手写一个链表并完成增删查改,或者用栈实现一个简易的括号匹配逻辑。更重要的是,面对别人写的代码你能大致判断它的时间开销在哪,而不是只看跑没跑通。资料配合上有个关键点:视频里讲的概念必须跟着动手敲,别只盯着屏幕看。建议每看完一个结构的概念讲解,立刻暂停,自己开个编辑器把基本操作写一遍,写不出来再回去重看。遇到复杂度分析那几节,准备纸笔跟着画一画循环次数,光听很容易漏。这套资料没有现成题库,你得自己找几道简单的实现题来练手,把视频里的抽象类型定义落到可运行的代码上,才算真的消化。
熟练学习用C语言实现本课程的基本数据结构和基本算法,并具备用C语言设计和实现有一定难度的算法的能力。
课程目录
* 01 数据结构简介/
* 01 零基础学懂数据结构课程简介.mp4 08:17
* 02 数据结构课程说明.mp4 11:53
* 03 数据结构课程说明(2).mp4 12:44
* 04 数据结构基本概念(1).mp4 16:26
* 05 数据结构基本概念(2).mp4 15:17
* 06 抽象数据类型定义.mp4 15:02
* 07 抽象数据类型表示和实现.mp4 05:01
* 08 算法的基本概念、特性和设计要求.mp4 16:48
* 09 算法的时间复杂度(1).mp4 17:32
* 10 算法的时间复杂度(2).mp4 14:58
* 11 算法的空间复杂度.mp4 07:25
* 12 算法总结.mp4 03:40
* 02 线性表/
* 01 线性表的基本概念(1).mp4 13:55
* 02 线性表的基本概念(2).mp4 11:09
* 03 线性表ADT引用型操作.mp4 15:19
* 04 线性表ADT的加工型操作.mp4 10:14
* 05 线性表ADT引用的讲解(1).mp4 13:35
* 06 线性表ADT引用作为形参的讲解(2).mp4 17:01
* 07 线性表ADT的顺序表示(1).mp4 11:56
* 08 线性表ADT的顺序表示(2).mp4 15:03
* 09 线性表顺序存储结构初始化操作.mp4 10:42
* 10 线性表ADT顺序存储结构的初始化(指针).mp4 09:23
* 11 线性表ADT顺序存储结构的插入操作(1).mp4 13:40
* 12 线性表ADT顺序存储结构的插入操作(2).mp4 17:02
* 13 线性表ADT顺序存储结构插入算法时间复杂度.mp4 08:01
* 14 线性表ADT顺序存储结构删除操作的具体实现.mp4 11:58
* 15 线性表ADT顺序存储结构删除操作时间复杂度.mp4 05:22
* 16 线性表链式存储结构的基本概念.mp4 18:11
* 17 单链表的存储结构.mp4 14:21
* 18 单链表的初始化操作.mp4 07:58
* 19 单链表按序号查找.mp4 10:08
* 20 单链表按值查找操作.mp4 05:16
* 21 单链表的插入操作.mp4 15:19
* 22 单链表的删除操作.mp4 14:15
* 23 单循环链表的基本概念和操作.mp4 09:17
* 24 单循环链表的应用举例.mp4 07:01
* 25 双向链表和双向循环链表的基本概念和操作.mp4 15:04
* 03 栈/
* 01 栈的基本概念.mp4 21:15
* 02 栈的顺序表示.mp4 12:18
* 03 顺序栈的存储结构.mp4 14:26
* 04 顺序栈的初始化操作.mp4 15:21
* 05 顺序栈的入栈操作.mp4 13:41
* 06 顺序栈的取栈顶元素和出栈操作的具体实现.mp4 10:55
* 07 链栈的基本概念.mp4 02:08
* 08 数制转换算法.mp4 11:01
* 09 括号匹配检算法.mp4 07:38
* 10 行编辑程序算法.mp4 09:41
* 11 迷宫求解算法.mp4 08:19
* 12 表达式求值.mp4 10:36
* 13 地图四染色算法.mp4 07:31
* 14 递归函数和栈——阶乘算法.mp4 13:24
* 04 队列/
* 01 队列的基本概念.mp4 08:42
* 02 链队列的存储结构、初始化和销毁算法.mp4 13:48
* 03 链队列的插入和删除操作算法.mp4 09:59
* 04 循环队列的基本概念以及队列的顺序存储结构.mp4 22:08
* 05 循环队列的各种算法.mp4 09:32
* 05 串/
* 01 串的基本概念.mp4 12:23
* 02 串ADT的定义.mp4 20:11
* 03 串的定长顺序存储和基于定长顺序存储的串连接算法.mp4 15:41
* 04 串的定长顺序存储substring算法.mp4 06:34
* 05 堆分配表示、基于堆分配的插入算法.mp4 17:16
* 06 基于堆分配的串连接和清空串算法.mp4 09:44
* 07 基于堆分配的串比较算法.mp4 03:53
* 08 串的块链存储.mp4 07:04
* 09 朴素模式匹配算法.mp4 17:28
* 10 KMP算法.mp4 19:46
* 11 next数组的生成算法.mp4 07:46
* 06 数组/
* 01 数组的定义.mp4 12:30
* 02 数组的顺序表示.mp4 14:28
* 03 数组顺序表示以及初始化操作.mp4 12:36
* 04 特殊矩阵的压缩存储.mp4 13:44
* 05 稀疏矩阵的概念以及三元组顺序表.mp4 10:53
* 06 稀疏矩阵按列转置算法.mp4 17:51
* 07 稀疏矩阵快速转置算法.mp4 15:37
* 08 行逻辑链接和十字链表.mp4 11:31
* 07 树/
* 01 树的概念和表示形式.mp4 18:47
* 02 树的ADT的定义.mp4 10:38
* 03 二叉树的概念和ADT的定义.mp4 12:52
* 04 二叉树的性质(1).mp4 09:54
* 05 二叉树的性质(2).mp4 17:53
* 06 二叉树的顺序存储结构.mp4 10:52
* 07 二叉树的链式存储结构.mp4 13:09
* 08 二叉树的先序遍历算法.mp4 22:33
* 09 二叉树的中序遍历序列和后序遍历序列算法.mp4 15:03
* 10 先序遍历二叉树递归算法在二叉链表上的实现.mp4 12:08
* 11 中序遍历二叉树递归算法在二叉链表上的实现.mp4 06:56
* 12 中序遍历非递归算法在二叉链表上的实现.mp4 15:30
* 13 统计二叉树中叶子结点个数.mp4 05:08
* 14 线索二叉树(1).mp4 19:51
* 15 线索二叉树的存储结构.mp4 10:24
* 16 建立中序线索链表算法.mp4 10:36
* 17 树的存储结构.mp4 21:50
* 18 树和二叉树的转化.mp4 08:28
* 19 树和森林的遍历.mp4 06:23
* 20 哈夫曼树的基本概念.mp4 13:56
* 21 构造哈夫曼树.mp4 09:30
* 22 哈夫曼编码和译码.mp4 17:53
* 08 图/
* 01 图的基本概念.mp4 15:09
* 02 图的基本术语.mp4 15:44
* 03 图的存储结构之数组表示法(邻接矩阵表示法).mp4 14:00
* 04 图的存储结构之邻接表表示法.mp4 14:02
* 05 图的存储结构之有向图的十字链表.mp4 08:26
* 06 图的存储结构之无向图的邻接多重表.mp4 07:54
* 07 深度优先遍历算法.mp4 24:36
* 08 广度优先遍历算法.mp4 10:50
* 09 最小生成树算法.mp4 15:31
* 10 拓扑排序算法.mp4 14:29
* 11 关键路径.mp4 26:47
* 12 迪杰斯特拉最短路径算法.mp4 16:02
* 13 弗洛伊德最短路径算法.mp4 06:19
* 09 查找思想和算法/
* 01 顺序查找算法.mp4 15:16
* 02 顺序查找的性能分析.mp4 03:55
* 03 折半查找算法.mp4 13:10
* 04 索引查找算法.mp4 08:33
* 05 二叉排序树的概念以及插入算法.mp4 13:43
* 06 二叉排序树的删除算法.mp4 07:59
* 07 二叉排序树的性能分析.mp4 02:58
* 08 平衡二叉树的概念.mp4 05:44
* 09 平衡二叉树的旋转.mp4 09:39
* 10 B树的定义.mp4 09:25
* 11 B树的插入算法.mp4 06:02
* 12 B树的删除.mp4 05:41
* 13 哈希表的构造.mp4 16:44
* 14 哈希表处理冲突的方法(1).mp4 08:57
* 15 哈希表处理冲突方法(2).mp4 09:11
* 10 排序思想和算法/
* 01 直接插入排序算法.mp4 21:33
* 02 折半插入排序.mp4 04:06
* 03 希尔排序算法.mp4 08:02
* 04 起泡排序算法.mp4 08:26
* 05 快速排序算法.mp4 14:09
* 06 简单选择排序算法.mp4 09:04
* 07 堆排序算法.mp4 17:45
* 08 链式基数排序算法.mp4 10:16
* 09 归并排序算法.mp4 03:51
* 11 数据结构ADT的具体实现/
* 01 线性表的顺序存储结构.mp4 13:43
* 02 线性表基于顺序存储结构的初始化操作.mp4 14:03
* 03 线性表基于顺序存储结构的判空操作和求长度的操作.mp4 05:13
* 04 线性表基于顺序存储结构的找后继的操作.mp4 05:00
* 05 线性表基于顺序存储结构的找前驱的操作.mp4 17:04
* 06 线性表基于顺序存储结构的取第i个元素的操作.mp4 10:58
* 07 线性表基于顺序存储结构的插入操作.mp4 10:34
* 08 线性表基于顺序存储结构的删除操作.mp4 08:59
* 09 线性表的链式存储结构.mp4 08:49
* 10 线性表基于链式存储结构的初始化操作.mp4 10:01
* 11 线性表基于链式存储结构的插入操作(头插法).mp4 15:11
* 12 线性表基于链式存储结构的插入操作(尾插法).mp4 10:21
* 13 线性表基于链式存储结构的插入操作(在第i个位置之前插入元素).mp4 11:25
* 14 线性表基于链式存储结构的删除操作.mp4 15:57
* 15 链表逆置.mp4 10:26
* 16 栈的顺序存储结构.mp4 08:27
* 17 基于顺序存储结构的栈的初始化操作.mp4 06:21
* 18 基于栈的顺序存储结构的入栈操作.mp4 12:40
* 19 基于顺序存储结构的取栈顶元素的操作.mp4 04:32
* 20 基于顺序存储结构的出栈操作.mp4 08:01
* 12 结课考试/
* 01 结课考试






