




资源介绍
视频数量:64个
总时长:8小时30分
课程介绍:
数据结构与算法入门
刚开始学编程的时候,你大概觉得数组能搞定一切。存个学生信息用数组,排队买票用数组,甚至连迷宫地图都想用数组来装。可等到真正去做项目时,你会发现有些问题用数组怎么写都别扭,代码越改越乱,运行也越来越慢。这时候你才意识到,光会写代码远远不够,还得懂数据结构。
这门课就是带你跨过这道坎的。八个半小时,六十四个视频,从最基础的概念讲起,一直讲到各种经典结构的实际应用。不用怕自己基础差,课程会一步一步带着你走。
一、打好地基:基本概念和必备工具
第一部分先帮你把脑子里的模糊认识理清楚。什么是数据结构?它为什么这么重要?课程会告诉你,数据结构本质上是一种在计算机里组织和管理数据的方式,不同的结构各有各的脾气,有的擅长快速查找,有的擅长频繁插入删除,没有绝对的好坏,只有适不适合。
这里还会讲到算法的基本概念,以及在学习过程中绕不开的数学符号,比如大O表示法,它能帮你衡量一段代码到底快不快、好不好。内存分配的概念也会一并介绍,让你明白数据在计算机里到底是怎么安家的。这些内容虽然看着像"理论课",但每一块都跟后面的实战紧密挂钩,跳过它们,后面的学习就会变成空中楼阁。
二、链表家族:从单向到双向再到循环
链表是数据结构里第一个真正让你感到"原来还可以这样"的家伙。它不像数组那样一口气占一整块连续内存,而是像串珠子一样,一个节点连着一个节点,灵活得很。
课程会从创建最简单的单向链表开始,然后带你把链表的各种操作练个遍:怎么找某个节点、怎么遍历整条链表、怎么在开头、结尾、或者指定位置插入新节点、怎么删除不同位置的节点。每一种情况都有对应的视频讲解,操作细节拆得很细。
学完单向链表,紧接着就是双向链表。每个节点除了指向下一个,还多了一个指向前一个的指针。这下好了,既能往后走也能往前走,某些场景下效率能提升一大截。插入和删除的各种情况,课程一个一个演示给你看。
再往后是循环链表,特点是最后一个节点不指向空,而是绕回头指向第一个节点,形成一个圈。单向循环、双向循环都会讲到。这种结构在处理环形数据、轮询调度等问题时特别好用,课程最后还会告诉你它实际能用在哪里。
三、栈:小身材,大用途
栈这个结构理解起来不难——后进先出,就像你往箱子里摞书本,最后放进去的总是最先拿出来。但它的本事可远不止"书本"这么简单。
课程会教你用数组和链表两种方式来实现栈。两种实现各有优缺点,课程会帮你分析清楚什么时候该用哪种。实现部分还配有完整的程序代码,跟着敲一遍,心里就有底了。
真正让栈出彩的是它的一堆经典应用。中缀表达式转后缀表达式、计算后缀表达式的值,这两个是编译原理里绕不开的东西,课程会一步步带你推演。括号匹配也是栈的拿手好戏,怎么判断你写的代码里括号配没配对,原理就在这里。递归调用、汉诺塔问题、嵌套函数调用,这些看起来高大上的概念,背后都站着栈的身影。学完这部分,你会突然发现,很多以前觉得神秘的机制,原来可以用这么简单的结构解释清楚。
四、队列:排队的学问
队列和栈正好反过来,先进先出,像超市收银台前的队伍一样公平。课程从最基本的队列开始,用数组实现入队和出队,用链表也能实现,两种方式各有适用场景。
接下来是循环队列,它解决了普通数组队列容易浪费空间的问题,插入和删除的操作都讲得很清楚。约瑟夫问题作为循环队列的经典应用,课程会带你用这个结构去解决,让你体会一下数据结构怎么把复杂问题变简单。
最后还会介绍双端队列和优先队列。双端队列两头都能操作,灵活性更强。优先队列则打破了普通队列"谁先来谁先走"的规矩,按优先级排先后,用数组或者链表怎么实现,课程都会讲到。
整门课走下来,你对数据结构的理解会从"听说过"变成"真会用"。链表、栈、队列这三大基础结构,每一个的操作和典型应用你都亲手过了一遍,再面对实际问题时,脑子里就会自然而然地蹦出几个备选方案去比较。不敢说学完就能成为算法高手,但至少在写代码的时候,你会知道为什么这么写,以及还能怎么写。