视频课程 编程

C语言数据结构与算法实战 (英文课程中文字幕)

¥5.00 已售 0
✓ 自动发货 ✓ 永久有效 ✓ 售后保障

资源介绍

视频数量:16个 总时长:2小时48分 课程介绍: C语言数据结构与算法实战 很多人学C语言时都有过这样的经历:课本上的链表定义看得懂,单步调试也能跟下来,可真让自己从零写一个插入节点、删除节点的程序,写到一半指针就不知道指到哪里去了。问题往往不在语法,而在数据组织方式没有想清楚。这门课有十六个视频,总时长两小时四十八分钟,没有把时间花在长篇理论推导上,而是把常见数据结构一个个用C语言写出来,让你看清每一种结构在内存里到底怎么连、操作时指针到底怎么动。 一、从结构体打底: 课程从结构体开始,这个安排很实在。链表节点、树节点、队列元素,底层都离不开结构体。第一部分先讲如何用结构体设计一个员工数据结构,把编号、姓名、工资这类信息打包在一起;接着讲结构体指针,也就是怎样通过指针访问结构体成员,这一步直接关系到后面链表节点的连接;然后讲结构体数组,用连续空间存放多条员工记录。很多人后面写链表卡住,不是因为链表太难,而是结构体和指针的结合没练熟。这部分把地基打牢,后面写节点、改指向、释放内存才不会发怵。 二、链表家族逐个实现: 第二部分是课程的重头戏,把链表的不同形态拆开讲。先写单链表的创建和基本操作,包括节点怎么申请、头指针怎么保持、插入和删除时前后节点怎么接上。单链表写顺了,再进入双向链表,每个节点多一个指向前驱的指针,插入删除时要同时照顾两个方向,边界条件更容易出错,也更能训练指针思维。接着是循环单链表和循环双向链表,尾节点不再指向空,而是绕回头节点,遍历时的终止条件随之改变。最后用链表实现多项式加法,把每一项的系数和指数存进节点,按指数对齐后合并同类项。这个例子很能说明链表的价值:多项式项数不固定,用数组容易浪费空间,用链表按需连接更自然。学完这一部分,你会对“改指向”这件事有手感,知道删除头节点、删除尾节点、在中间插入这些情况分别要处理什么。 三、栈、队列与稀疏矩阵: 第三部分讲栈和队列,并且分别用数组和链表两种方式实现。数组实现栈,重点在栈顶位置怎么变化,栈满和栈空怎么判断;链表实现栈,重点在头指针怎样充当栈顶,出栈时节点怎样释放。队列也一样,数组版要看清队头和队尾如何移动,链表版要理清入队和出队时两个指针怎样配合。课程还安排了稀疏矩阵的数组实现和链表实现。矩阵里大量元素是零时,直接把整个矩阵存下来很浪费空间,用数组存非零元素、用链表存非零元素,是两种不同的压缩思路。最后讲后缀表达式求值,遇到操作数就压栈,遇到运算符就弹出两个数计算,再把结果压回去。这个例子把栈的后进先出特点用得很具体,也能帮你理解计算器、表达式解析这类程序的基本套路。 四、二叉搜索树: 第四部分讲二叉搜索树的创建和操作。二叉搜索树要求左子树的值小于根,右子树的值大于根,查找时每次比较都能排除一半左右的数据。课程会写节点的创建、插入、查找和删除,删除节点尤其要小心,因为被删节点可能有零个、一个或两个子节点,处理方式不同。树的操作大量使用递归,也会反复用到指针,正好把前面结构体和链表练出来的能力综合起来。学完这部分,你会明白为什么有序数据用树来组织比链表查找更高效,也会对递归调用的展开过程更有感觉。 这门课适合已经学过C语言基础语法的人,比如能写循环、分支、函数,知道数组和指针的基本用法,但一遇到链表、栈、队列就不知道从哪下手。也适合正在准备数据结构考试的学生,书上的概念背了不少,缺的是把伪代码变成真正C程序的经验。还适合工作中需要处理数据组织问题的人,比如要判断什么时候用数组、什么时候用链表,栈和队列适合什么场景,树结构怎样支持快速查找。课程不要求你事先精通数据结构,但需要你愿意跟着视频动手敲代码,因为指针和内存这些问题,只看不写很难真正掌握。 学完这十六个视频,你收获的不是一堆零散代码,而是一套能落地的实现思路:看到一种数据组织需求,能判断该用连续存储还是链式存储,能估计插入删除和查找的代价,能写出结构体、指针、递归配合起来的C程序。更重要的是,再遇到指针报错、链表断链、栈溢出这类问题时,你会知道从哪个环节去查,而不是对着屏幕干着急。