如何学好数据结构?

贡献者:properties 类别:简体中文 时间:2017-01-23 10:16:34 收藏数:12 评分:0
返回上页 举报此文章
请选择举报理由:




收藏到我的文章 改错字
个人认为数据结构是编程最重要的基本功没有之一!学了顺序表和链表,你就知道,
在查询操作更多的程序中,你应该用顺序表;而修改操作更多的程序中,你要使用
链表;而单向链表不方便怎么办,每次都从头到尾好麻烦啊,怎么办?你这时就会
想到双向链表or循环链表。学了栈之后,你就知道,很多涉及后入先出的问题,例如
函数递归就是个栈模型、Android的屏幕跳转就用到栈,很多类似的东西,你就会第一
时间想到:我会用这东西来去写算法实现这个功能。学了队列之后,你就知道,对于
先入先出要排队的问题,你就要用到队列,例如多个网络下载任务,我该怎么去调度
它们去获得网络资源呢?再例如操作系统的进程(or线程)调度,我该怎么去分配资
源(像CPU)给多个任务呢?肯定不能全部一起拥有的,资源只有一个,那就要排队!
那么怎么排队呢?用普通的队列?但是对于那些优先级高的线程怎么办?那也太共产
主义了吧,这时,你就会想到了优先队列,优先队列怎么实现?用堆,然后你就有疑
问了,堆是啥玩意?自己查吧,敲累了。总之好好学数据结构就对了。我觉得数据结
构就相当于:我塞牙了,那么就要用到牙签这“数据结构”,当然你用指甲也行,只
不过“性能”没那么好;我要拧螺母,肯定用扳手这个“数据结构”,当然你用钳子
也行,只不过也没那么好用。学习数据结构,就是为了了解以后在IT行业里搬砖需要
用到什么工具,这些工具有什么利弊,应用于什么场景。以后用的过程中,你会发现
这些基础的“工具”也存在着一些缺陷,你不满足于此工具,此时,你就开始自己在这
些数据结构的基础上加以改造,这就叫做自定义数据结构。而且,你以后还会造出很多
其他应用于实际场景的数据结构。。你用这些数据结构去造轮子,不知不觉,你成了又
一个轮子哥。数据结构和算法是一部发展史,发明他们就是为了“做出东西”,
学习他们是为了不重复发明轮子,当你在“做东西”时遇到运行效率上的瓶颈,
就可以参考这些前人的方案,当学完后,就能评估出一个“东西”以现在的技术是
否可能做出来有人罗列xx结构、xx算法能干嘛干嘛全是屁话,书上都有。说白了
这东西就是前人的公式,学习就是为了套公式解决问题的,解决世界难题就要发
明新公式(算法/结构)能否做出来包括两点:效率是否能承受,功能是否能实现
一些语言包装了大量基础算法,用于快速实现功能,一般效率也是可以接受的当效
率不能接受,就需要调整算法和结构,c甚至汇编题主应该是想做看得见摸得着的东
西,所以应该选择抽象级别高的语言。先定这“东西”干嘛用的,拆分所有要实现的细节,
逐个完成,当它运作起来并快如预期,就做完了是否有必要深入学,和你在实现过程
中的效率需求有关。我认为数据结构是程序设计中的第二层。第一层是抽象,
把你想要描述的东西用程序语言抽象出来。比如说一个人,你应该用怎样的类去储存,
这是第一层抽象。数据结构的作用是,如何将数据组织起来。为什么要将数据组织起来?
因为计算机无法理解你的抽象,它不知道这个人的爸爸是他,兄弟是他,得由你程序猿来告诉它。
为什么不知道,因为计算机中只有0和1,数据都是0和1,这个节点和那个节点的关系,
二者如何互相得到,这是程序员要做的,数据结构教的。因为计算机不知道怎么做。
算法是什么,算法就是如何在节点与节点之间,状态与状态之间相互转移。
声明:以上文章均为用户自行添加,仅供打字交流使用,不代表本站观点,本站不承担任何法律责任,特此声明!如果有侵犯到您的权利,请及时联系我们删除。
文章热度:
文章难度:
文章质量:
说明:系统根据文章的热度、难度、质量自动认证,已认证的文章将参与打字排名!

本文打字排名TOP20

登录后可见