数据结构 复习攻略 新手必看

        “数据结构”是计算机、软件工程专业考研时,最经常考的科目之一,也是很多同学头疼的科目。本文介绍的方法是通用的,既适用于408中的数据结构部分,也适用于大部分自主命题科目的数据结构部分。

        图灵奖获得者,计算机科学家 Niklaus Wirth 曾经说过一句著名的话:

 Algorithm+Data Structures=Programs

翻译过来就是:    算法+数据结构=程序

        由此可见,数据结构在程序中的重要性。我们不仅仅在考研中要掌握它,而且在ACM等比赛,以及软件开发,算法设计等等,都会用到它。

    那么,数据结构到底应该如何复习呢?

前驱知识

        首先,学习数据结构需要有一定的计算机语言基础。比如C语言,C++等等。没有语言基础的同学会很吃力。并且,很多例子、题目,甚至结构都是用编程语言表达的,部分考试题目也会要求你用伪代码或者某种语言编程作答。

        

        所以如果对于跨考生,尤其是对计算机/软件工程专业并没有了解过的跨考生,务必要提前学一门编程语言。建议学C语言。

        对于学过但是忘了或者当时没好好听课的同学,建议抽时间回顾一下语言,这样对于之后的学习也有帮助。

前期策略

        首先,确定你要考哪些内容。

        

        如果是408,那么去看一下408考试的大纲,明确考试范围。

        如果是自主命题,那么一部分报考学校也会公布考试范围或者参考书。

        没有学习过数据结构,或者已经忘了的话,建议重新看一下课本。

        408的同学,看一下自己曾经学过的数据结构教材,或者用之前推荐的《数据结构》严蔚敏版。

        自主命题的同学,建议看报考学校推荐的参考书。如果没有,建议看报考学校本科所用的课本。

        如果时间充裕,可以用电脑把所学的数据结构和算法实现一下,这样更能加深理解。时间不充足的话就不必了。

        如果是初学者,可以看一些数据结构的视频课,比如严蔚敏的,清华的,电子科大的等等。视频比看书要有意思,对于自己看书吃力的同学会有帮助。

中期策略

        对于基础较好的同学,可以不用看教材(当然考试范围还是要了解的),直接从中期开始。

        中期的任务是熟悉题型,加强知识点,分清重难点,把握知识体系,熟练掌握解题技巧。

        

        一般会选择王道或者天勤的数据结构辅导书。

        王道和天勤是两个计算机专业的考研论坛,每年都会出版相关的复习辅导书。虽然有时候书中的小错误很多,但还是蛮符合考研需求的。

        两者相比较,王道书的题目比较多,适合练习,而天勤的讲解多一些,题目较少。选哪个就随你喜欢啦~

        这个时期还可以做一件事,就是整理算法模版。

        像ACM比赛用的算法模版,数据结构也可以整理一套自己的算法模版。可以包括像众多的排序算法,搜索算法,KMP,二叉树遍历等等。

        整理出这套算法模版后,打印出来,并背过。后期遇到题目的时候就可以直接套用模版来做题。

后期策略

        这个时期是最关键的。主要任务是熟悉真题。

        

        真题是比较宝贵的,一般只能获得几年或者什么都得不到。

        因此,尤其不建议在前期就开始做真题。当然前期或者中期可以看看真题,了解一下考试范围。

        对于真题的研究务必要仔细。可以先模拟考试环境,做一遍真题。考完之后分析自己什么地方出错了,什么地方的知识点掌握的比较薄弱,然后对应的去学习。

        同时补充和加强自己的算法模版,把真题中遇到的有价值的算法整理进去。

        如果找不到任何真题,那么可以做一下同一学校相似专业的题目(如果都考数据结构),例如计算机可以做一下软件工程的题目。还可以做一下报考学校本科的期末考试题,相关的其他资料等等。

        一般即使没有真题留出,各种论坛上也会出现“回忆版”真题。虽然不能用做考试,但用来复习知识足够了。

        

        到考试前几天,主要的任务是回顾真题和复习模版。注意模版的内容一定要保证正确,并且你要知道如何使用。

        最后,以积极的心态应对考试。祝同学们考个好成绩~

数据结构1800题1. 算法的计算量的大小称为计算的( )。【北京邮电大学2000 二、3 (20/8分)】 A.效率 B. 复杂性 C. 现实性 D. 难度 2. 算法的时间复杂度取决于( )【中科院计算所 1998 二、1 (2分)】 A.问题的规模 B. 待处理数据的初态 C. A和B 3.计算机算法指的是(1),它必须具备(2) 这三个特性。 (1) A.计算方法 B. 排序方法 C. 解决问题的步骤序列 D. 调度方法 (2) A.可执行性、可移植性、可扩充性 B. 可执行性、确定性、有穷性 C. 确定性、有穷性、稳定性 D. 易读性、稳定性、安全性 【南京理工大学 1999 一、1(2分) 【武汉交通科技大学 1996 一、1( 4分)】 4.一个算法应该是( )。【中山大学 1998 二、1(2分)】 A.程序 B.问题求解步骤的描述 C.要满足五个基本特性 D.A和C. 5. 下面关于算法说法错误的是( )【南京理工大学 2000 一、1(1.5分)】 A.算法最终必须由计算机程序实现 B.为解决某问题的算法同为该问题编写的程序含义是相同的 C. 算法的可行性是指指令不能有二义性 D. 以上几个都是错误的 6. 下面说法错误的是( )【南京理工大学 2000 一、2 (1.5分)】 (1)算法原地工作的含义是指不需要任何额外的辅助空间 (2)在相同的规模n下,复杂度O(n)的算法在时间上总是优于复杂度O(2n)的算法 (3)所谓时间复杂度是指最坏情况下,估算算法执行时间的一个上界 (4)同一个算法,实现语言的级别越高,执行效率就越低 A.(1) B.(1),(2) C.(1),(4) D.(3) 7.从逻辑上可以把数据结构分为( )两大类。【武汉交通科技大学 1996 一 、4(2分)】 A.动态结构、静态结构 B.顺序结构、链式结构 C.线性结构、非线性结构 D.初等结构、构造型结构
1.1 单项选择题 1. 数据结构是一门研究非数值计算的程序设计问题中,数据元素的① 、数据信息在计算机中的② 以及一组相关的运算等的课程。 ① A.操作对象   B.计算方法  C.逻辑结构  D.数据映象 ② A.存储结构 B.关系 C.运算 D.算法 2. 数据结构DS(Data Struct)可以被形式地定义为DS=(D,R),其中D是① 的有限集合,R是D上的② 有限集合。 ① A.算法 B.数据元素 C.数据操作 D.数据对象 ② A.操作 B.映象 C.存储 D.关系 3. 在数据结构中,从逻辑上可以把数据结构分成 。 A.动态结构和静态结构 B.紧凑结构和非紧凑结构 C.线性结构和非线性结构 D.内部结构和外部结构 4. 算法分析的目的是① ,算法分析的两个主要方面是② 。 ① A. 找出数据结构的合理性 B. 研究算法中的输入和输出的关系 C. 分析算法的效率以求改进 D. 分析算法的易懂性和文档性 ② A. 空间复杂性和时间复杂性 B. 正确性和简明性 C. 可读性和文档性 D. 数据复杂性和程序复杂性 5. 计算机算法指的是① ,它必具备输入、输出和② 等五个特性。 ① A. 计算方法 B. 排序方法 C. 解决问题的有限运算序列 D. 调度方法 ② A. 可行性、可移植性和可扩充性 B. 可行性、确定性和有穷性 C. 确定性、有穷性和稳定性 D. 易读性、稳定性和安全性 1.2 填空题(将正确的答案填在相应的空中) 1. 数据逻辑结构包括 、 、 和 四种类型,树形结构和图形结构合称为 。 2. 在线性结构中,第一个结点 前驱结点,其余每个结点有且只有 个前驱结点;最后一个结点 后续结点,其余每个结点有且只有 个后续结点。 3. 在树形结构中,树根结点没有 结点,其余每个结点有且只有 个直接前驱结点,叶子结点没有 结点,其余每个结点的直接后续结点可以 。 4. 在图形结构中,每个结点的前驱结点数和后续结点数可以 。 5. 线性结构中元素之间存在 关系,树形结构中元素之间存在 关系,图形结构中元素之间存在 关系。 6. 算法的五个重要特性是__ __ , __ __ , ___ _ , __ __ , _ ___。 7. 分析下面算法(程序段),给出最大语句频度 ,该算法的时间复杂度是__ __。 for (i=0;i<n;i++) for (j=0;j<n; j++) A[i][j]=0; 8. 分析下面算法(程序段),给出最大语句频度 ,该算法的时间复杂度是__ __。 for (i=0;i<n;i++) for (j=0; j<i; j++) A[i][j]=0; 9. 分析下面算法(程序段),给出最大语句频度 ,该算法的时间复杂度是__ __。 s=0; for (i=0;i<n;i++) for (j=0;j<n;j++) for (k=0;k<n;k++) s=s+B[i][j][k]; sum=s; 10. 分析下面算法(程序段)给出最大语句频度 ,该算法的时间复杂度是__ __。 int i=0,s=0; while (s<n) { i++; s+=i; //s=s+i } 11. 分析下面算法(程序段)给出最大语句频度 ,该算法的时间复杂度是__ __。 i=1; while (i<=n) i=i*2;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值