- ardim
-
学好数据结构首先学好C语言指针,数据机构内在串联全靠指针作用,指针主要难在本身是带地址的变量,再加上指针的指针串联导致很多人误解,先要学会理解,要对计算机的内存结构有个大概了解,对一些常见的进制之间的转化以及字节对齐等有行程基本的认知。
理解概念,建立抽象模型,比如简单的队列,先进先出模式,在设计数据模型的时候,就需要有一个对头和队尾的概念,数据需要从队尾插入队头出来,基本上三个属性就出来了,一个对头指针,一个队尾指针,一个结构体数值,常见的方法有删除清空队列,有插入队列操作,出队操作,创建初始队列操作等等,这样子抽象数据模型,形成自己的思维理解,然后再进行代码设计。
需要变通实践,代码调试变通,数据结构的组合无穷变着写代码。算法的奥妙就是在于变换,放在数据结构也是这个样子,掌握基本的数据机构算法,在学好数据结构的前提下可以学习下一本经典的算法书《算法导论》这个是算法的经典书籍。
学习数据机构不要想着有什么技巧或者方法,把自己调整到最佳的学习状态,方法自然就有了,不要给自己设置什么限制,设置底线只会让自己处在一个围墙之内,学习新东西就是突破自我的一个过程,不要在开始学习的时候给自己过大的压力。
- 床单格子
-
分享一下我个人的学习方法,我觉得算是比较简单的一套方法,对智商要求不高。
——资料来源:
(星星代表我的使用频率)
1.教材:
数据结构与算法分析 (豆瓣)
(经典之作,广为人知)
数据结构 (豆瓣)
(严蔚敏的,就是国内大学常用的那本。严谨,伪代码不错。)
大话数据结构 (豆瓣)
(语言比较通俗。比第一本简单易懂。btw,作者程杰老师在知乎上也相当活跃)
算法(第4版) (豆瓣)
(图超多。比第一本简单易懂。)
2.慕课:
浙江大学的:数据结构 - 网易云课堂
(真的很棒。借雷军的一句广告:我所有的向往。对于每个知识点的视频讲解,基本都涉及了:动画演示、写代码的思路、写代码的技巧、算法优化、算法复杂度分析等等)
清华大学的:数据结构-学堂在线慕课(MOOC)平台
(同样地非常非常非常好。比起浙大的数据结构,难度更深,内容更多。而且听完课以后,不仅知其然,也知其所以然。)
3.整个互联网!
——说明:
1.教材这么多本一起用!是的,一起用!对于某个知识点,多翻几本书看看,哪本书讲得好就看哪本。关于这些教材的优缺点,大家都应该很熟悉了。可能有人对严蔚敏的《数据结构》有疑虑,我个人认为这本书的优点是很严谨,而且代码也不错,就是书写得不友好,许多地方没有照顾读者智商(特别是我的智商)。所以,看得懂就好,看不懂就算了,教材反正还有嘛~
2.只靠书还是不够的,你需要搜索!比如KMP算法,特别难理解,但是你一搜索,可以发现很多人 在博客上分享他们的理解,讲解详尽,例子丰富,比书上好多了。
3.强烈推荐慕课。这两门慕课的老师的讲解都特别棒。首先是易于理解。对于算法概念上的分析讲授,由于是视频,在演示上比书本有先天优势,使得内容很好理解。接着是,视频能够比书本带来更大的信息量,提高了效率。最后是,看视频很明显比看书轻松有趣。
4.最后提醒,需要练习做题。只是看一遍书和视频,那是远远不够的。本人的题主要来自老师,如果你找不到题,请参考其它答主的回答,或者在我所说的那门慕课里找到做习题的网站。(不得不说,这个做题的网站也很棒。哎呀浙大好棒呀)最后,看完书和视频能懂,只算70%;能写代码能跑,才能算90%(2020更新:做题网址在此pintia.cn/problem-sets?)
5.推荐两个学习小技巧:(1).各个算法都有一些随着过程不断地改变的数组吧?把他们在纸上推导一遍(2).尝试一下手写代码(用word也行)(当然啦,不要求完全正确)。如果这样都能写出来,那肯定掌握了95%+。
*********补充一点儿感悟***********
按知识点来,一个一个知识点去攻破。
不必按部就班地,把某本书从第一章看到第十章,或者把某门课从从头到尾都看。不必这样。
对,按照知识点,一个一个来。
1.先知道是怎么回事。
2.然后使劲理解。
3.接着做题检验自己。
4.下一个知识点。
以知识点为目标,而不是以某本书或某门课为目标。
至于这个知识点怎么掌握,可以看书,可以看视频,可以看百科,可以搜高手的教学贴等等。
不仅仅是在这个问答里面,在别的很多地方相关的提问,很多答主都直接抛个书名。
要我说,一个书名是不够的,得列个书单才行,不仅如此,还有视频单,百科单,甚至仅就一个KMP算法就可以列个分析贴单了233333....
- Chen
-
最近在学习数据结构,虽然大学的时候,每个老师都说数据结构很重要。包括对我们找工作、代码的逻辑性都起决定性作用。但最后还是没有多少人学好了数据结构,包括我。所以代价就是,工作的时候又得抽时间重新来一遍。
入门学习数据结构时应主要是这两个过程:
选择一本合适的书。(初学者应从C语言实现开始学习)
编程实现和应用。(不断的刷题、看课程、同时做实验)
1.阅读书籍
一定要看书,一定要看书。数据结构和语言不一样,他不是锻炼我们编程能力,更多时候考察的是我们逻辑问题,也就是一种优化。
若果是纯小白的话:建议去图书馆借一本大学的比较薄一些的教材《数据结构》,然后建议尽量快的往后学习。如果一个知识点实在不懂,就可以跳过,学习到后面与前面知识点联系起来,说不定你会觉得很简单。
- 北有云溪
-
常见数据结构:链表、树(如二叉树)。
2、常见算法思想:贪婪法、分治法、穷举法、动态规划,回溯法。
以上列出来的算是最基本的吧。就是说你刷题之前,要把这些过一遍再去刷题。如果你连这些最基本的都不知道的话,那么你再刷题的过程中,会很难受的,思路也会相对比较少。
总之,千万不要急,先把这些基本的过一遍,力求理解,再去刷题。这些基础的数据结构与算法,我是在大一第二学期学的,我没看视频,我是通过看书学的,那时候看的书是:
1、算法分析与分析基础:这本比较简单,推荐新手看。
2、数据结构与算法分析—-C语言描述:代码用C写的,推荐看。
3、挑战程序设计竞赛(第二版):也是很不错的一本书,推荐看。
具体可以看我的另外一篇文章,里面是介绍这几本书的:
算法与数据结构书籍与视频福利
说实话,我那一学期的时间几乎都花在数据结构与算法上,但刷的题很少,只是书本上的一些例题。所以当我把这些基本的过一遍之后,再去一些网站刷题依旧非常菜。
所以你们千万别指望以为自己把这些思想学完之后刷题会很牛,只有多刷题,只有多动手实践,你的灵敏度才会提高起来。
- 北境漫步
-
在网上有这一类的课程,买上,跟着老师学习效果事半功倍,自己摸索事倍功半。
- Troublesleeper
-
学习数据结构首先要学好C语言,然后去专门的培训班进行学习。
- 苏萦
-
如何学习数据结构?只要你真心实意地想学一门技术想学好,可以在网上找辅导教师也可以其他办法来参加学习班,总之只要踏踏实实的学一定会能把咱们技术学到手。
- 血莲丿红尘
-
学习数据结构,你先要弄清楚学的目的是什么?这个数据结构在编程的时候非常有用,对数据在存储器中存放的位置,怎样检索,等等有重要意义。然后就要一步一步跟着老师走,习题弄懂,适当实践,基本可以初步掌握。
- tt白
-
想要学习数据结构也是需要通过一些专业的培训机构来进行学习,这样的话也是能很快速很方便的学会。
- LuckySXyd
-
这个东西我觉得是需要具体的一个学习的,她通过有课本的基础,理论学习,然后还有就是网络实践上面的那种,直接去看数据结构去分析。
- 豆豆staR
-
你自己数学思维玩足够,不然学习起来会比较费劲,也不一定会有效果,一般还是男生学习的好一些
- 大鱼炖火锅
-
如何学习数据结构?回答数据结构很难学,必须有专业的导师来引导才能达到这个标志。一般的情况下数据是不好掌握的。
- bikbok
-
学习数据结构?可有两种方法,第一自学,从网络上找一些个数据文章,可以自己购买一些书籍进行自己学习。第2可以专业课程学习。不过需要占用大量的时间,而且还需要准备一定的费用。可以根据自己的时间和经济条件来选择。
- 臭打游戏的长毛
-
数据结构要的是思想,但你至少要熟练 一门语言,怎能检验你的思想是否正确?强烈推荐《STL源码剖析》。结合STL中的源码去分析,STL是我看到的最全的以数据结构为宗旨的一种库,还建议你去下一个STLPORT,之中的源码比VC提供的好些,很全,基本上能够用到的数据结构都涉及到了,并且在学这个库的过程当中还可以学习一些设计模式,还可以学习VC中的范型运算思想。
- gitcloud
-
数据结构是一个非常复杂的。你需要有一定的科学知识作为支撑才可以解决和理解