数据结构考研算法怎么办 计算机考研复习小结
计算机考研 数据结构 关于算法题的问题,考研怎么复习《数据结构 》严蔚敏,我看了快一个月了,以前也学过C++,但还是一塌糊涂,尤其是算法?请问一下数据结构考研。比如说书上的顺序表的算法是否要背下来,计算机考研数据结构应该如何复习?数据结构在考研中如果编程如果没有写出最佳算法,算不算错。
本文导航
- 计算机考研 数据结构 关于算法题的问题
- 考研怎么复习《数据结构 》严蔚敏,我看了快一个月了,以前也学过C++,但还是一塌糊涂,尤其是算法?
- 请问一下数据结构考研。比如说书上的顺序表的算法是否要背下来。
- 计算机考研复习小结
- 数据结构在考研中如果编程如果没有写出最佳算法,算不算错?
计算机考研 数据结构 关于算法题的问题
我觉得考试时写算法注重的是算法思想。你怎么写都可以,不过最好加上注释!这样才能清晰地体现出你的思路来。
代码模块化当然很好,但是模块的粒度应该不要太小。插入排序思想不复杂啊,就两步:先找到位置,然后移动数据。
我觉得你按书上写的过程来就可以,没必要单列两个模块。
考研怎么复习《数据结构 》严蔚敏,我看了快一个月了,以前也学过C++,但还是一塌糊涂,尤其是算法?
看C++ primer.
请问一下数据结构考研。比如说书上的顺序表的算法是否要背下来。
顺序表的算法是否要背下来
【答】:不需要。
你只需记住相关算法实现的思想和定义相关数据类型就可以了。至于那些个用的变量,数据类型的符号,你可以随意定,当然如果符合一定的规范,比如用相关的英文组合这样更容易阅读
计算机考研复习小结
▶重难点解析和复习建议
统考大纲对数据结构的考查目标定位为掌握数据结构的基本概念、基本原理和基本方法,掌握数据的逻辑结构、存储结构以及基本操作的实现;能够对算法进行基本的时间复杂度和空间复杂度的分析;能够运用数据结构的基本原理和方法进行问题的分析求解,具备采用C、C++或JAVA语言设计程序与实现算法的能力。
当然,考生也不必因此而专门复习一遍C或C++程序设计,毕竟复习时间有限,而且数据结构要求的重点在于算法设计的能力,而不是编写代码的能力,因此,只要能用类似伪代码的形式把思路表达清楚就行,不用强求写出一个没有任何语法错误的程序。
▶知识点解析
线性表这一章里面的知识点不多,但要做到深刻理解,能够应用相关知识点解决实际问题。链表上插入、删除节点时的指针操作是选择题的一个常考点,诸如双向链表等一些相对复杂的链表上的操作也是可以出现在综合应用题当中的。
栈、队列和数组:可以考查的知识点相比链表来说要多一些。最基本的,是栈与队列FILO和FIFO的特点。比如针对栈FILO的特点,进栈出栈序列的问题常出现在选择题中。其次,是栈和队列的顺序和链式存储结构,这里一个常考点是不同存储结构下栈顶指针、队首指针以及队尾指针的操作,特别是循环队列判满和判空的2种判断方法。再次,是特殊矩阵的压缩存储,这个考点复习的重点可以放在二维矩阵与一维数组相互转换时,下标的计算方法,比如与对角线平行的若干行上数据非零的矩阵存放在一维数组后,各个数据点相应的下标的计算。这一章可能的大题点,在于利用堆栈或队列的特性,将它们作为基础的数据结构,支持实际问题求解算法的设计,例如用栈解决递归问题,用队列解决图的遍历问题等等。
树和二叉树:这一章中我们从顺序式的数据结构,转向层次式的数据结构,要掌握树、二叉树的各种性质、树和二叉树的不同存储结构、森林、树和二叉树之间的转换、线索化二叉树、二叉树的应用(二叉排序树、平衡二叉树和Huffman树),重点要熟练掌握的,是森林、树以及二叉树的前中后三种遍历方式,要能进行相应的算法设计。这一部分是数据结构考题历来的重点和难点,复习时要特别关注。一些常见的选择题考点包括:满二叉树、完全二叉树节点数的计算,由树、二叉树的示意图给出相应的遍历序列,依据二叉树的遍历序列还原二叉树,线索化的实质,计算采用不同的方法线索化后二叉树剩余空指针域的个数,平衡二叉树的定义、性质、建立和四种调整算法以及回溯法相关的问题。常见的综合应用题考点包括:二叉树的遍历算法,遍历基础上针对二叉树的一些统计和操作(比如结点数统计、左右子树对换等等),判断某棵二叉树是否二叉排序树,以上这些都要求能用递归的和非递归的算法解决,特别要重视非递归的算法,线索化后二叉树的遍历算法,如查找某结点线索化后的前驱或后继结点的算法以及给出Huffman编码等等。
图:在这一章中需要识记的是图以及基于图的各种定义,存储方式。要熟练掌握图的深度遍历和广度遍历算法,这是用图来解决应用问题时常用的算法基础。需要掌握基于图的多个算法,能够以手工计算的方式在一个给定的图上执行特定的算法求解问题。常见的应用问题直接给出或经过抽象,会成为下列问题:最小生成树求解(PRIM算法和KRUSKAL算法,两种方法思想都很简单,但要注意不要混淆这两种方法),拓扑排序问题(这里会用到数组实现的链表,可以注意一下),关键路径问题(数据结构的较大难点,要把概念理解透,能做出表格找出关键路径),最短路径问题(有重要的应用背景,也是贪心法不多的能给出最优解的典型问题之一)。
查找:这一章,需要识记关键字、主关键字、次关键字的含义;静态查找与动态查找的含义及区别;平均查找长度ASL的概念念及在各种查找算法中的计算方法和计算结果,特别是一些典型结构的ASL值,B-树的概念和基本操作冲突解决方法的选择和冲突处理过程的描述,B+树的概念(新增考点),特别要注意B-树和B+树概念的对比,以及Hash表相关的概念。要熟练掌握顺序表、链表、二叉树上的查找方法,特别要注意顺序查找、二分查找的适用条件(比如链表上用二分查找就不合适)和算法复杂度。
排序:既是重点,又是难点。排序算法众多,大纲中还加上了外部排序,总共10种,各种不同算法还有相应的一些概念定义需要记住。选择题常见的问题包括:给定数列要求给出某种特定排序方法运行一轮后的排序结果,或者给出初始数列和一轮排序结果要求选择采用的排序算法,给定时间、空间复杂度要求以及数列特征要求选择合适的排序算法等等。如果排序这一考点出现在综合应用题中则常与数组结合来考查。
数据结构在考研中如果编程如果没有写出最佳算法,算不算错?
同考研,是这样的,应该仔细看清楚题目的字眼。
一类是 请实现某某某功能
另一类是 请尽可能用短时间或者就地实现之类的
第一类只是要求你实现,那么只要实现都对。
另一类就有要求,如果你的算法和它时空复杂度相同,那么全对。如果复杂度更高,那么一般会酌情给分。一般都有分。只是看有多少的问题。