
考研是选拔性考试,对知识点的各种细节的掌握以及深入理解要求非常高。
如果仅仅是熟悉一下各种数据结构的实现以及怎么使用(比如STL),而不去抠定义以及各种细节来在规定的时间内把题目做对的话,50天理解能力强的人确实可以过两遍。
但是对于考研来说,这种不以应试为目的的过两遍,没有任何意义。
如果只有50天的话,要达到考研408中数据结构需要的水平,我个人觉得肯定是不够的,首先,教材是严蔚敏的数据结构(C描述),这本书难度比较大,而且写的非常专业,光吃透这本教材没有个两三遍是很难深入理解的,我当初第一遍花了一个半月,然后配合做题+第二遍,远远超过了50天,我估计100天都有。
考试的时间有限,题量还不小,那些常见的算法,比如二叉树的非递归遍历算法,求宽度,高度,各种排序算法,堆排序的调节算法,AVL的各种旋转算法,KMP中求Next数组的算法,等等起码要能熟练而且迅速的写出来代码才行吧。
如果一个快排你还得回忆半天,那你怎么写的完题目咯。
鉴于题主不考408,那么你们数据结构自主命题的难度到底是什么样的,我建议你买一些历年真题回来对比着看一下,配合考纲,不考的不用复习,有针对性的着重看考过的知识点。
如果不是很难的话一些比较难的部分就可以不深究,比如图的算法的实现,线索二叉树的算法,AVL树等等,但原理还是要深刻理解的。
然后学了C的话,并不意味着不需要学链表 、串、排序了,我不知道你C是用的哪本教材,如果仅仅只是学C语言的话,确实是会附带着讲一点数据结构的知识,但是都太浅了,面太窄了。
比如串,C语言中可能就只是学一点字符串处理?严蔚敏数据结构教材中讲的是广义的串,链表的话,也是先讲顺序表,而不是链表,这是一个子集的关系。
排序的话,其实冒泡排序,快排这些都是内部排序,外部排序C语言应该是不会学的。
再高效的学习方法,最终目的都是深入理解并灵活运用所学的东西,这种东西是走不了捷径的,只能理解并非常熟悉才行。
对于C语言的要求不会很高,我给你归纳一下:1.基本语法要非常熟悉,比如函数结构,循环结构,switch,struct, typedef, static等等。
2.熟练使用指针,要会用malloc()以及free()还有sizeof(),并且理解原理以及工作过程3.熟练使用函数递归调用,并且理解其思想,因为很多数据结构本身就是递归定义的,比如二叉树,这种递归的思想很重要,而且要具备将递归转化为非递归的能力,考试过程中,如果能熟练使用递归的话能在算法设计题上省下大量的时间,因为递归实现的话代码量将大大减少。
4.最好了解一下C++的引用(&),因为严蔚敏数据结构这本教材中大量使用了&(pass by reference)以及*&(传指针引用)来进行参数传递,其实在C++中引用是用指针来实现的,并不是什么新东西。
最后的建议:实在要在50天内解决数据结构的话,每天起码6个小时放在数据结构上吧。
多做题,多动脑子,多手写代码,数据结构不能死记硬背,一定要理解算法原理,灵活运用,不变应万变。
在此:我祝您好运! (望采纳)
考研培训_高顿考研带你逆袭985/211
请问考研的计算机专业数据结构大家都什么时候复习?学习数据结构,有什么好的书籍可以推荐?计科专业从事软件开发多年,在学校里面数据结构这个课程开设过,基本上第一次学习数据结构C语言版本脑子几乎都是晕乎的,因为搞不懂指针来回指向,后来跟一个前辈请教如何学这东西,先把指针彻底搞明白,然后再学习数据模型,最后一步直接用C语言代码来实现,开始不要尝试着都能给搞明白,基础不够很难理解透彻,于是专门拿出时间把C语言的指针研究了一遍,由于当时不像现在的互联网上资料那么多, 只能在网上找点抽象的例子进行研究,对指针彻底的了解是看了林锐博士写的高质量C/C++编程,里面对指针的介绍特别深刻,从此指针也就慢慢理解了。
掌握了指针之后再去搞数据结构,想比之前已经轻松太多了,也不要太着急直接去尝试搞代码先把数据模型搞明白,数据模型是连接数据的桥梁,链表,队列,栈,二叉树等等概念,然后了解每个数据模型的数据结构,以及需要做的动作,在没写代码之前先把这些数据模型要做什么事情搞清楚,然后才去尝试写代码,一般来讲第一个模型写的比较费劲后面就以次类推了,万事开头难,数据结构书本主要分为多种编程语言的,有C语言,C++,java版本数据机构,对于这类的书籍讲解差异不是很大,没有必要太过追求那本书,主要是还是模型思想和代码实现.学习数据结构有什么用?现在就拿自己从事的行业来讲,C/C++,数据结构算是基本功,设计一个功能模块除了选择编程语言之外剩下的就是构造数据模型,在C语言里面叫结构体,在C++里面属于类,如何设计有时候就会借助数据结构里面的基本模型,常见的编程模型里面队列和链表用的比较多,一般的设计模型中都会涉及到消息队列,就是典型的一种数据模型,如果有数据结构基础这些东西理解起来就非常快,所谓的编程基础除了基本的编程语法基础还有数据模型等基础。
学习数据结构也非常有助于算法理解,再复杂的算法也是由基础的数据结构算法构造起来的,任何一种算法也不是什么空中楼阁都是无数个小的基础算法堆积起来的,没有这些基础直接从事算法的学习,几乎是不太可能的事情。
懂得常见的数据结构模型,更容易看懂大型的项目的代码,拿到一份源码首先要梳理的是功能列表以及里面数据内容的传递,懂数据结构对于理解框架非常有好处,要玩大型的项目,先从看懂基础的代码开始,研究代码需要一定的基础,有了模型概念对于有框架的代码研究起来快一些。
在刚入行的时候经常听到老程序员说到,一个新的功能模块只要数据结构都梳理清楚了,就可以考虑写代码了,不要看一个功能模块里面一个小小的类或者结构体,里面每个变量可能都会串联着一串功能,所以一个结构体设计完毕了,基本功能模块也就设计清楚了。
很多初学者都有这么一个不好的习惯,一边写着代码代码一边设计思路,这是编程大忌,编程首先要思路清晰,代码只是把你的思路展示出来,具体的实现好坏就要看基本功了,同样的功能不同的设计人员设计出来会有截然不同的效果,在性质以及实现效果上都有所差异,本质来讲是实力的差异,所以写代码的就是为了实现既定的思路,数据结构是设计结构体或者类的基本依据。
希望能帮到你。
数据结构是计算机存储、组织数据的方式,包括数组、链表、栈、二叉树、哈希表等。
算法是解决问题的方案,是为数据结构服务的,算法能对数据结构中的数据进行各种处理,比如查找数组中的数据,或对其进行排序等等。
有很多程序员能够非常熟练地运用编程语言,但是对于自己开发的应用的效率和未来的改进方向并没有非常清晰的认识和规划,这往往是因为没有掌握好数据结构和算法的知识,不能从全局角度把握问题的解决和优化方案。
因此,对于程序员来说,学习数据结构和算法是非常有用的。
对数据结构和算法的应用随处可见应用数据结构和算法可以很高效地解决常见问题。
我们买票排队,应用的数据结构就是队列,特点是先进先出;物流装车应用的数据结构就是栈,特点是先进后出(最先被装到车上的货物最后才能取出来)。
当你打开一个音乐APP时,你可以将歌曲按照曲名或是歌手排序,这就是排序算法在实际中的应用。
这些看上去司空见惯的应用或者功能,其实都用到了数据结构和算法的思想。
数据结构和算法会对问题解决的质量和性能产生影响解决一个问题有很多种方法,但有些方法会比其他方法更好,学习数据结构和算法就是学习高质量的解决方案。
假设你要登录一个网站,该网站必须核实你是否有其账户,因此必须在其数据库中查找你的用户名。
如果你的用户名为KarImageddon,该网站可从以A打头的部分开始查找(顺序查找),但更合乎逻辑的做法是从中间开始查找(二分查找)。
如果这个网站的注册用户只有几百个,用户或许感受不到两种查找方式所花费时间的差异,但如果注册用户的数量达到了几千万甚至是几个亿,不同查找算法的效率对网站响应速度的影响就非常明显了。
3.数据结构和算法思想是程序的灵魂数据结构和算法虽然看上去很枯燥,但它们其实是计算机科学的核心技术和原理。
著名的瑞士计算机科学家沃思(N.Wirth)教授曾提出:算法 + 数据结构=程序编程的本质是算法,而算法的本质是解决问题。
程序设计的实质是对实际问题设计/选择好的数据结构和好的算法。
对任何专业技术人员来说,理解数据结构和算法都非常重要。
Java、Python、C/C++、Javascript、PHP、R语言等各种编程语言不断更新迭代,但经典的数据结构和算法思想却历久弥新,指导着程序员们针对问题的特点和数据的规模设计出合适的解决方案。
基于上述原因,数据结构和算法也是很多互联网公司面试的必考题目。
对任何事都具备逻辑思维的人能够编写非常优秀的代码,而缺乏这种逻辑能力的人无论多么努力学习‘编程’也无济于事。
数据结构和算法不仅是程序员的必学知识,也可以帮助普通人解决问题,培养高效、快速安排资源和解决问题的能力。
在这里推荐一本非常有趣的算法入门书《算法图解》,这本书使用了丰富的插图和示例,对应用广泛的数据结构和算法原理进行了生动形象地阐述,可以帮助读者快速地理解以往觉得晦涩难懂的专业概念,不仅适合计算机专业的学生入门,也适合非专业的读者用来学习解决问题的思路。
《算法图解》,作者:[美]Aditya Bhargava,译者:袁国忠对计算机知识和图书感兴趣的朋友可以关注@人民邮电出版社
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)