数据结构你学懂了吗?

开篇就习惯开门见山。

你可能会链表、顺序表、栈、队列、串、压缩矩阵、二叉树、森林、有向图、无向图什么的。但是除此之外呢?你还知道什么?

好吧,就算你说的这些,你知道这些概念,那你写个二叉树我看看?

这很可能就是面试官的一句问话。在大学里面,我们肯定都学过数据结构这门课程,还做了相关的实验报告,编程实现的这一过程。但是,这并不代表数据结构你学了。是的,就是你学了,而不是你学懂了。就真正的定义而言,数据结构包括两类:基础数据结构高级数据结构

我们上课听的数据结构课,如果站在老师的角度上面来考虑:一学期只有40节理论课,8节实验课。数据结构包括线性表、树、图、排序这么多内容,并且大部分学生在这门课学习之前对此基本是一无所知。如何能最大化让他们都听懂,这是老师该考虑的。但是,老师们忽略了一个至今也无法解决的问题,如何让学生们认识到数据结构的重要性,并培养他们自己深究下去的兴趣。个人认为,这是现在大学教育课堂中,最重要的问题。

俗话说,兴趣是最好的老师。相比于算法而言,数据结构的“门槛”会低很多。而且,数据结构学习的过程实践所占的比例远大于理解所占的比例。因为数据结构普遍的知识不是太难,除了个别的(网络流、红黑树),这些知识基本上一学期的学习可以理解大部分。但是理解归理解,学归学。希望大家永远不要弄混这两个概念。

永远不要把“我理解了”认为是“我学会了。

数据结构是一门实践性很强的学问。就排序而言,书中所讲的那些排序,可能思想你都会懂。当然,代码你也会看得懂。毕竟你说你学了。不错,但是你知道为什么要这么写吗?还有,如果我改动一点点,同样能实现排序功能,但是会出现问题,你能分析出问题出在哪里吗,并且能说出为什么吗?而且,如果我要你说稳定性到底有什么作用吗?你可能理解这个概念,但是当你碰到真正问题之前,你是不会明白稳定性的作用。

这就是一个说明。

但是可惜的是,在大学中,数据结构除了用在数据结构课堂上之外,平时几乎用不到。就信息类专业的课程来说,可以这样调侃,以后没多大用的高等数学在其他课程中出现的频率是数据结构在其他课程中出现的频率的几十倍。事实上,数据结构是程序中的一个重要“支撑点”。在很多的公司笔试中,会把平常生活中的问题要你用数据结构知识来处理。比如说一串数据的查询,修改,求和,排序,比较等等。这些都是数据结构的知识。

不过我知道的是,在现如今,不仅在大学中除了数据结构专业课有考试之外无其他任何检测手段,在面试笔试,工作中,大家都以为程序是由类组成,应该用框架,而这些框架直接在开源网站上面copy下来就行了。因此,明白数据结构但是不会写成了很多程序员的“弊端”。

甚至会出现这么一种情况:如果你在某个地方别人(也许是老师学长,也许是上司同事)教你用这个结构处理这组数据的什么什么功能。你不会就此探究其他第二条解决办法。并且在以后再碰到类似问题都用这种结构处理。如果哪一天你很不幸还是碰到这组数据,还是要实现这个功能,但是你发现数据不仅多,而且很大,相当于过关游戏的加强版来了。你对此束手无策。你此时很想翻书或者上网查找一些解决办法,但你发现此时你的知识似乎已经完全退还给老师了。

希望大家搞清楚一个事实:课堂上学的数据结构只是基础数据结构,是最原始的存储处理数据的办法。如果要有对以后项目数据问题处理的能力,你需要深究,继续学习高级数据结构,甚至还需要学习一点点算法。

并且请大家还要明白:课堂上老师讲的数据结构的内容通俗易懂,你能得心应手,很大的原因是你不需要亲自用代码实现,老师都会给现成的给你看。事实上,看懂一段代码就跟听一首歌一样简单,如果此前你已经明白思想的话。但是写好这段代码就像要唱好这首歌一样困难。如果你只会听歌的话。

因此,数据结构的学习不在于听,而在于写,在于实践。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值