庞学网首页网站入驻

数据结构算法考研怎么学?社科赛斯把抽象概念拆成例子

数据结构算法考研怎么学?社科赛斯把抽象概念拆成例子

数据结构概念抽象是很多人学不下去的原因。社科赛斯讲怎么用具体例子理解线性表、树、图这些概念,以及算法题该从哪一步开始下手。

核心要点

  • 抽象概念要先有具体形象,再去记定义
  • 数据结构这门课,题目几乎都能落回到某几个基本操作上
  • 算法题卡住时,先看输入输出和边界,再想思路
  • 手写代码之外,理解每一步为什么这么做更重要

抽象是因为跳过了具体形象

数据结构这门课的概念抽象程度高,很多人看书的时候每句都认识,合起来却不知道在说什么。

问题往往不在理解力,而在学习顺序:直接从定义开始,脑子里没有对应的形象,定义就变成了符号。

更有效的顺序是先有具体形象再回头看定义。比如学栈之前,先想清楚它和日常生活里的盘子堆叠是什么关系,这样看到一个元素的进出就知道对应什么操作。

有了形象之后再看定义,定义就是在给这个形象命名,理解成本一下子降下来。

线性表、树、图各自的形象

线性表的形象最直观:一条排队的人。插入就是在中间某人后面站进来,删除就是某人离开,其余人的相对位置不变。

树的形象是家谱或者文件夹。一个节点有若干子节点,这些子节点构成子树。树上的遍历方式,本质上就是按不同的顺序访问家谱上的成员。

树需要重点体会的是层级关系,以及由此带来的操作差异。比如平衡树和非平衡树在查找效率上的差别,就来自层级是否均衡。

图的形象是地图或者关系网。顶点是地点,边是路线。图的遍历问题就是从某地出发能到哪些地方,以及怎么走最短。

这些形象不需要精确,但足够支撑你理解操作的含义。等到做题时,抽象定义和具体操作已经能对上了。

结构类型形象类比核心操作易混点
线性表排队的人插入、删除、按位查找顺序与链式的差别
栈盘子堆叠入栈、出栈、取栈顶与队列混淆
队列排队窗口入队、出队循环队列的判定
树家谱层级遍历、查找、插入各种遍历顺序
图地图路线遍历、最短路径邻接矩阵与邻接表

算法题从哪一步下手

很多人做算法题的第一反应是硬想思路,结果往往卡住。这一步的问题在于还没搞清楚题目在问什么。

正确的第一步是读清输入输出和边界条件。输入是什么类型的结构,输出要什么结果,规模约束是什么。这三件事决定了用哪个算法。

第二步是找最基本的操作。这道题要求的是插入、删除、查找还是遍历,把问题还原到已知的操作上,思路就出来了一半。

第三步才是设计算法。这时候考虑的是效率和正确性,通常思路本身不难,难的是能不能自己推出来。前两步做扎实,第三步会顺很多。

手写之外还要想清楚为什么

数据结构考试里,代码题的比重不低,很多人练的是默写。但这有个问题:换了个包装就写不出来。

写代码时更应该追问的是每一步为什么这样做:为什么在这里交换,为什么用这个下标,为什么这个循环次数。

追问了原因之后,代码就是从逻辑推出来的,而不是背下来的。遇到变体题也能推。

另外建议把常见的操作多手写几遍。手写的价值在于暴露细节问题,比如下标越界、初始值设置错误,这些看代码是看不出来的。

常见问题

Q:数据结构怎么入门?
A:先建立具体形象再记定义。每学一个结构,用一个日常类比说明它的操作,再回头看定义,理解会顺很多。

Q:算法题完全没有思路怎么办?
A:先别硬想。回到输入输出和基本操作这两个层面,把问题还原成熟悉的操作形式,思路通常就在这一步出现。

Q:要手写代码吗?
A:建议多手写。手写能暴露下标、边界这类细节问题,这些问题看代码是发现不了的。

Q:408里的其他科目和难度关系?
A:计算机组成原理偏记忆与理解结合,数据结构偏动手,操作系统偏概念辨析。三块的复习方法不同,要分别对待。

如需获取数据结构与算法的学习方法,可直接联系咨询:

报名咨询电话:400-061-6586
联系人:程老师
咨询微信:pxbbaoming

了解更多详情,请点击访问:社科赛斯考研普研计算机408课程

说明:本文围绕社科赛斯考研课程设置与教学方法整理,各模块实际讲授内容与开课安排以课堂授课和学校当期通知为准,学校不对学员的考试结果与录取结果作承诺。

温馨提示:本文内容根据课程内容整理,各模块实际讲授内容由授课老师根据学员情况灵活调整,最终以课堂授课为准。