值不值得学:先看它解决什么工作场景

很多上班族和转行者一听到数据结构,第一反应是“我又不搞底层开发,学这有什么用”。其实这门课解决的核心问题很具体:让你在写代码时不再只凭感觉,而是能判断一段逻辑在数据量翻倍时会不会崩。日常场景比如批量处理表格时卡顿、写个查询脚本慢得离谱、或者面对笔试题里的数组链表无从下手,本质都是数据结构没理清。它不教你做页面,也不讲框架,就是帮你把程序运行的骨架弄明白。如果你正卡在“能写增删改查但看不懂稍复杂的逻辑”这一步,这门课就是用来补这个缺口的。

适合什么基础,建议先看哪几块

资料明确以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 结课考试