食之鳅攸
考研是选拔性考试,对知识点的各种细节的掌握以及深入理解要求非常高。如果仅仅是熟悉一下各种数据结构的实现以及怎么使用(比如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个小时放在数据结构上吧。多做题,多动脑子,多手写代码,数据结构不能死记硬背,一定要理解算法原理,灵活运用,不变应万变。在此: 我祝您好运! (望采纳)