导航:首页 > 数据处理 > 如何学习数据结构

如何学习数据结构

发布时间:2022-05-12 10:48:35

❶ 怎么才能学好数据结构

1、 数据结构学习一定要自己独立完成代码实现,虽然有时候你理
解内容了,但是实现上面还是会愈要很多困难的,解决这些困难会帮助你提高程序设计的能力的。
2、 数据结构是计算机专业最重要最基础的一门课,对于有过编程
经验的人,结合自己的编程体会,去领悟它的思想;对于初学者,捡一种自己最熟悉的语言去分析它,总之千万不要陷在语言的细节上,要高屋建瓴的去领会数据结构的思想。而且随着编程经历的丰富对它的体会越深入,最初接触是对一些思想可能只是生硬的记忆,随着学习的深入逐渐领悟了很多。对于实在弄不懂的东东,就先记住!!!
3、 将各种数据结构算法烂熟于胸,这是一个优秀程序员的必须具
备的基本素质,是后来进步的基石。书上的例子自己看看,然后不看书自己想想做成代码,在以后使用的时候看看能不能用这些数据结构来解决问题。
4、 自己试着把书上的数据结构尽量写成可复用的独立模板(模
块),以后用着方便,学得也深刻, 以后复习不用看书了,反复温习即便自己的代码就行了, 说实话,找工作面试的时候数据结构几乎是必问的!
5、 我觉的学数据结构,应该从算法入手,不能急,我现在还在搞
数据结构呀!不过现在觉的不那么难了呀!因为主要是算法,一点一点理清,会有柳暗花明的时候的。

6、 数据结构要反复看书,量变引起质变,可能一开始看不太懂,
单当看多了的时候,你会茅塞顿开!
7、 我觉得数据结构要的是思想,学的也是思想, 但你至少要熟练
一门语言,要么怎能检验你的思想是否正确,强烈推荐《STL源码剖析》!!!结合STL中的源码去分析,STL是我看到的最全的以数据结构为宗旨的一种库,还建议你去下一个STLPORT,之中的源码比VC提供的好些,很全,基本上能够用到的数据结构都涉及到了,并且在学这个库的过程当中还可以学习一些设计模式,还可以学习VC中的范型运算思想,等等,开始行动吧!!! 8、 怎样学习数据结构,最好方法是一起讨论。
9、 1)如果你没有学过C语言,或者C语言学的不好的时候把数据
结构当成一本数学书来学,它所讲述的都是一些简单的图论。在你的大脑中的主线不能丢失:线性结构,树结构和图结构。当你不再考虑复杂的程序设计时,仅仅研究个个离散点之间的关系,似乎数据结构也就不会那么难了。
2)学习好了抽象的离散点关系后,再巩固一下你的C语言水平,书中描述的都是类C。因此你只要学习简单的C定义、判断、循环语句就基本能看的懂课本中所有程序了。
3)以上都完成后,从数据结构的线性表开始。线性表中顺序表,似乎是为你学习C语言设计的,学好线性表的链表是你起步的关键。后面的树结构,图结构,排序,查找都少不了链式结构,往往这个也是最难的。
4)看程序的时候一定要自己在纸上画画,最好先学会画程序的流程

图,也许那样你学程序也就会更快一些。
5)数据结构是程序设计的最基本也是最有用的地方,学完之后你会受益匪浅的。
10、 多找些难题搞搞,就知道数据结构的魅力了,因为好些题只有用
合适的数据才能做到做好。当你想用一种数据结构来解决某个问题却不知道怎么用时,这时学起来就很快。
11、 我根据我个人的学习经验我觉得很多人的误区是背算法而不是
通过结构来想自己的算法。算法操作数据结构而数据结构的设计的好坏直接影响到算法。
12、 学习的方法只有一种,那就是 管它是什么,先学再说,至于怎
样才能学好嘛,这因人而定,每个人的思考方式都不同,看待问题不可能总是一样,适合别人的不一定就适合你,适合你的也不一定适合别人,不过一种通用的方法就是,信心 + 恒心 + 悟性 + 好的书籍

❷ 如何学好数据结构

(转)
前面的话:轻舟曾经热衷于把自己复习时候遇到的问题和总结的经验分享给大家,不过
来了交大以后,发现这里卧虎藏龙,自己只不过是溪底小虾一个。于是放弃了以前出数
据结构笔记的打算,不过,最近又有许多同学问起我数据结构的事情,这里就把以前总
结的笔记的前言帖出来,但绝对不会有后续部分,希望大家见谅。

学习数据结构这门课程至少要经历三个过程,方可真正
的掌握这门课程,得到一个满意的成绩。这个过程简单来说就是三个字:活→死→活。
首先,是一个学“活”的过程,就要要求我们对书中的每一个算法,能够在脑海中
建立起相应的模型,而不是死板的算法。比如树的遍历非递归算法,在入栈与出栈的过程
中,我们就要在脑海中形成访问树每个结点的过程,真正掌握住这个算法。这样,全书复
习下来,你的脑海中就有了整个数据结构的模型概念,对任何一个陌生的算法,将不感到
生疏和害怕。
有些同学到了此处就觉得数据结构已经学好,可以万事大吉了,其实这还远远不够
,如果参加考试,往往会拿不到高分,甚至还会纳闷,为何自己数据结构学的这样好,成
绩却不尽如人意,因此产生了批卷老师判错的想法。所以第二个过程,就是一个学“死”
的过程,这个过程要求,要记住书中的算法(功利一点就是要背诵会所报考学校的考试要
求的算法)。有的学校有别的特殊要求,也一并背会。如上海交通大学喜欢考平均复杂度
的分析这样的题目,我们在书上可以找到这样的分析一共十一个,全部背会,就免去了在
考场上分析的麻烦,如果连答案都能记住,那么,也不会因为粗心失分了。这一过程也许
有些枯燥,但却是最重要的过程,比如说背会了树的后序遍历非递归,遇到了像求某个结
点的所有祖先,两个结点的共同祖先这样的题,不用想,直接套用。这样才是考试的高分
的关键:在考场上,遇到考题,不用思考,直接从脑海中找匹配的算法,直接引用。
有了第二个过程的辛苦,我们就可以得到一个比较高的分数了,如果还想提高,就
要进行第三个过程,再学“活”的过程。这一个过程中就要要求我们,在第二步的基础上
,多进行思考,看看有哪些算法有共性,比如说:树的前序非递归遍历算法和图的深度优
先遍历算法是不是类似啊,有些什么不同,有些什么相同,为什么会相同;森林转化为二
叉树和图的生成树的算法也是这样,等等。总结出这种共性,这样就能正确有效的记忆算
法,同时,遇到难题不至于慌乱,能够从容下手解题。
对于总结共性问题上,这里举一小个例子,(呵呵,我当初总结出这个,并且和ka
oyan.com斑竹一具讨论确定后三天,就在2002年交大第一题考出类似东东)比如树的遍
历,不管是递归还是非递归
,也不管是线索树,还是头结点有父母信息的树,它的遍历其实就是一个寻找到遍历的第
一个结点,然后再寻找它的后继结点的过程,我们归纳到此处,就可以试着总结一下三种
遍历的后继结点是哪个,有几种情况:
对于前序遍历,它的后继如下:
(1)若有左孩子,则后继是左孩子;
(2)若无左孩子,有右孩子,则后继是右孩子;
(3)若既无左孩子,又无右孩子,则是一片叶子;再讨论:
(a)若是其父母的左孩子,且父母有右孩子,则后继是父母的右孩子。
(b)若是其父母的左孩子,且父母无右孩子;
(c)若是其父母的右孩子。
b,c都表示这是某个节点的左子树前序遍历的最后一个节点,则需要找第一个有右子
树的“左祖先”(定义“左祖先”,即找第一个使得当前节点在这个祖先的左子树上),
然后后继就是这个祖先的右孩子。
对于中序遍历,它的后继如下:
(1)如有右孩子,后继是右孩子的最左下节点;
(2)若无右孩子,且是父母的左孩子,则后继就是父母;
(3)若无右孩子,且是父母的右孩子,则一直上溯到第一个“左祖先”(定义如前)
则后继就是这个祖先。若无这样的祖先,说明已经遍历完毕。
对于后序遍历,它的后继如下:
(1)若是父母的右孩子,则后继是父母;
(2)若是父母的左孩子,且父母无右子树,则后继是父母;
(3)若是父母的左孩子,父母有右子树,则后继是父母右子树的最先访问到的节点(
指向父母的右子树后,一直往左,若不行的话,往右一步,一直到叶子)
总结完了,想一想,我们还能得到哪些提示?经常有一类型题目,要求求某个结点
的直接前驱。其实求前序遍历的前驱和求后序遍历的后继是一样的,只不过把左换成右而
已,前序遍历的求后继和后序遍历的求前驱、中序遍历的求前驱和中序遍历求后继都有这
样的对称关系。因此,总结出共性的东西,许多题目就可以迎刃而解了。问一问读到这里
的读者,你现在能够自己在脑子里面,非常轻松地像上面那样,把这个例子里面的情况都
条理清楚地分析总结出来吗?如果现在还不行,到考试之前,你必须掌握到这种程度,才
能得到一个自己很满意的分数。
经过以上的三个过程复习,相信读者对数据结构的掌握就可以到达比较高的水平了
,如果参加考试,获得一个比较满意的成绩也很有希望了。当然,达到这一
步并不容易,大量的练习是真正掌握的必由之路。因此,我们建议大家能够下功夫把本书
中的题目完整地做一遍。能够真正把本书中的所有题都掌握,绝不仅仅意味着仅会了书中
这几百道题目,而是意味着对数据结构这门课程的理解,以及对问题的分析能力都有很大
的提高,这样在考场上即使遇到未曾见过的题目,也就可以从容应对了!

❸ 到底该如何学习数据结构

昨天买了本《大话数据结构》,之后就开始看。数据结构给我的印象就是一大堆code,自己实现很麻烦,而且很容易出detail errors,望着书上的代码,我在想,难道我真要把他们都能独自写下来?其实想想怎么也是不必的,说最低级的要求,工作中一下代码然后会调用functions就OK了,更何况有C++的STL,另外在ACM这种竞赛中,STL也是允许的,更何况可以带material。而且即使自己都能独自写下来,那么不常写也多少会忘点细节方面的问题(比如错误处理漏条件),因为自己当时写代码不一定能想得那么严谨。可见,那些代码are not important,重要的还是思维。那些代码只是develop your thinking的tools而已,并不是说要求你一定能全都write下来,当然,如果你understand it completely,那么只要你的coding能力过关,那写出代码不在话下,只不过容易出现细节问题罢了,代码上的细枝末节不是应该我们关注的东西。也就是说,那些实现性的代码是帮助你学习的,但并非你的归宿,你可以理解这个数据结构后使用代码去describe你的想法,来验证一下你是否真明白了,但不应该把是否能写出代码作为标准,相比之下,应该更强调对自身思维的培养和如何利用这个数据结构去做一些实际的事情。 刘汝佳在《算法竞赛入门经典》当中提到:一方面,很多常见数据结构已经包含于C++的STL或者Java的JCF中,不必自行编写;另一方面,需要自己编写的复杂数据结构在传统教材是找不到的。换句话说,对于准备算法竞赛来说,传统教材的最大价值在于概念和思想,而非代码。在《算法竞赛入门经典》中,作者多次心中有剑,手中无剑,使用数组来模拟一些数据结构,比如用数组模拟二叉树、模拟链表,这样写出的代码十分简洁,我看了之后才知道原来使用一个数据结构并不一定要把它的标准实现写出来,我认为掌握数据结构的思想并能对实现进行灵活的变幻才是学习数据结构应该达到的目标和境界。 所以学习数据结构,我认为应该以读书理解和做题为主,写实现为辅。

❹ 如何学习数据结构与算法

1、记住数据结构,记住算法思想(是什么)

记住数据结构最直观的东西;记忆该数据结构的定义、性质、特点等。很多东西的理解和创新都是以记忆为前提的。


2、进行大量相关编程练习,用编程语言去实现某一数据结构上的算法(怎么办)


很多时候,理解一个算法很容易,很容易在纸上去模拟一个算法的实现过程。但具体实现,则是另一回事。一定得先自己思考,然后再去看书中给的编程语言实现。


3、“记住”特定情景下,利用某一特定的数据结构,去解决问题 (为什么+怎么办)


每介绍一种数据结构,浙大数据结构与算法的MOOC课程都会有一个实际问题来作为“引子”,回答了“这种数据结构为什么会出现”。有的是为了实现特定的操作,有的是为了时间和空间上(大部分考虑的是时间复杂性)效率的更高(所以,没事的时候,分析一下算法的时间复杂性)。这些东西,我们也须理解记忆。每一数据结构都有其特性,去解决某一类问题,我们需要去记忆,去感悟。


4、形成一个属于自己的知识体系


如何去“记住”(记好笔记,多多复习);在学习过程中,遇到挫折,产生挫败感该如何处理(这个是必然会发生的,总有难以理解不会的地方);如何进行心态方面的调整(欲速则不达,不过也有”敏捷学习“的概念)。

❺ 如何学好数据结构

首先回答你的问题,我认为学习数据库之前应该学习离散数学和线性代数。这两门课中就有一些数据结构的算法,比如哈希函数、最短路进算法等等,此外还有一些运算的技巧,比如矩阵的运算技巧和存储技巧。当你对离散和线性代数有一定基础后,接触数据结构课程就比较容易了。我们当初学习的是高等教育出版社的用C语言描述的数据结构,基本上前几章在C中讲过,但必须要仔细听,因为他渗透了更多的、更有变化的算法,比如链表的各种操作和类型,尤其注意的是双向循环链表、十字链表。此外队列要注意循环队列。第二个重点就是树,首先要知道书的存储结构和逻辑结构是怎样的,然后要重点了解树的各种遍历,因为不同遍历形成不同种(前,中,后)缀表达式。此外哈夫曼树的建立,哈夫曼编码解码也是很重要的,因为他是当今数据压缩的最经典的算法之一。然后就是排序和查找算法,大多数用到树的知识,一定要记住排序和查找算法,因为他几乎是程序的灵魂模块。各算法的事件复杂度和稳定性的比较也要当作重点。总之学习数据结构不要看他的用什么语言描述,应该看他的实质,太在乎C中的指针的操作只会影响你的学习。

❻ 如何学习数据结构

数据结构的本质就在于:如何将现实世界中各种各样的数据放入到内存中,并且如何在内存中操作这些数据,如何评价这些存储方案和操作方法。
数据结构难学吗?是难学。
为什么难学?一开始上来就讲空间复杂度、时间复杂度,就讲抽象数据,当然难学了。
1、生活、生产等现实世界的数据有各种各样的组成形式。例如一个课程的所有学生的成绩(一组数据),一个班全部学生的所有课程的成绩(一张表)、一个单位的人员结构(树)等等。
2、这些数据都要先加载到内存中,再送到CPU中进行计算。
3、内存的最基本单位叫做存储单元,一个字节(不讨论理论中的、个别情况的)。存储单元相当于一个空盒子,可以放置数据。为了便于管理,盒子会给一个编号,当然存储单元也会有编号,其实就是地址。理论上地址的方案可以有多种(计算机组成原理和操作系统的任务),不过对于程序员来说,这些都跟我们无关,为了简单起见,我们把存储单元的编号(地址)都编成0、1、2、3、4,......这样的,于是这些编号或地址的取值范围,我们就称地址空间。这个地址空间,跟一维坐标轴一样,所以是一维线性空间。
4、很明显,数据就是一个个放入到这些存储单元中,就象我们把一个单位的物品放入盒子一样。现在,假设一个盒子只能装入一个单位的物品。因而,一个存储单元也只能放入一个单位的数据。
5、接下来,假设说,我们有很多很多的空盒子(X个)。有一天,我们要将若干单位物品(N个)放入盒子中,那么我们可以在一个盒子放入一个单位物品。依此类推,我们可以在一个存储单元中放置一个单位的数据。
6、再接下来,我们有两种放置方案:一个挨一个地连续地放置物品;当然,也可以不连续地放置物品。依此类推,在内存当中放置数据,也有两种方案,连续地放置数据,或者不连续地放置数据。为什么会有不连续的放置方案呢?原因很简单,一个主要的原因是,内存的空间利用率高,碎片少(操作系统的存储管理的知识,且不用理会),删除旧有的数据很容易(这个是数据结构的内容)。
7、现在,可以把这两个将数据放入到存储单元的方案叫做物理存储。对连续物理存储方案来说,事情比较好办,通过编号(索引、下标)就可以找到物品,对于不连续的方案,那么我们就要在一个物品上面标记下一个物品的位置,这个标记就是下一个物品的地址(指针)。当然,在计算机中,指针的记录本身也要占用内存的存储单元,所以我们在c语言中用结构体把数据和指针组织成为一个单位。通过这个指向关系,我们可以在不连续的放置方案中依次地查找我们所需要的东西(物品或数据)。
8、接下来,就象我们经常进行从盒子当中查询物品、取用物品或增加物品等操作一样,我们也要进行从内存当中查询数据、取用(删除)数据或增加数据等操作。那么,对于不同的物理存储方案来说,其方法是不一样的。这个想一想,我们如何对付真实的物品,我们就如何对付内存中的数据。这就是数据的物理存储方案的数据操作。
9、好了,搞懂这些,字符串之类的知识点就不难了。
10、记住一点,只有两种物理存储结构:连续的和不连续的,因为内存的存储单元的地址(编号)是0、1、2、3......(一维地址空间、或者线性地址空间)。
11、是不是只有物理存储结构(方案)就可以了呢?在第1条中说过,现实当中的数据是有各种各样的结构的。而在第10条,我们强调了物理放置方案只有2种:连续的和不连续的。
12、于是就产生一个问题,如何将现实世界当中的关系各种各样的数据放入到内存之中。
13、解决第12条中的问题,我们可以分两步走,第1步是将现实世界的数据组织成为逻辑结构,第2步再把逻辑结构的数据映射到物理结构中。
14、显然,在第1步中,我们抛去数据的其它属性,只留下数据的两个属性就可以了:一个属性是数据的值,另一个属性就是数据之间的关系。这两个属性就得到一个逻辑结构:graph(图),这就是离散数学中的图论。那么,这就是科学家的事情,他们负责针对具体的问题,将现实世界的数据构造出对应的graph(图)。
15、在第2步中,我们要做的事情,把这个graph映射到物理存储结构中,这就是数据结构要做的事情了。显然,我们可以用数组来存储,也可以用链表来存储,回忆一下最短路径算法的两个做法。ps.,二维数组、三维数组也是一个连续存储的结构,在c语言debug下,看看地址就知道了。那么,不连续的存储结构,也就是链表,当然有很多的衍生:双向链表、十字链表、等等。
16、显然,不管现实世界中的数据之间的关系如何,我们都可以用graph来描述,只不过是,不同的数据关系有不同的结构而已,比如:树、森林、mesh,等等。
17、当然,我们要掌握一些常见的graph的操作方法,最主要就是搜索方法。而且还要注意,这些方法是分两个层次的,一个物理存储结构这个层次,一个是逻辑存储结构这个层次的。那么现在,深度优先搜索、广度优先搜索是哪个层次呢?
18、当然,我们还要掌握一下存储结构的压缩。
19、到了这个时候,我们还要问一下,各种方案的优劣性质如何,也就是空间复杂度和时间复杂度了。
20、当然,我们这个时候,还要进一步的问一问,能不能将这些逻辑结构给出一个统一的描述,那么,就是抽象数据了。
21、当然,我们还要掌握逻辑存储结构的各种树的优化,特别是针对不同的应用,比如红黑树、B树。
22、当然,我们最后还要学习一下外存的存储结构。
23、当然,实验是少不了的。自己debug一下内存单元的地址,并且在纸上手工的画一下是最好了。
24、最后,有了这些基础,剩下也就好办了。
25、不推荐教材。尤其是国外的教材,先容许我默默地吐一下槽,各种知识点零碎不堪,不成体系,不成系统。

❼ 新手如何学习数据结构

要想掌握数据结构与算法要点一般如下:
1、要熟悉数据结构整个大纲。如:
逻辑存储结构:分为线性结构和非线性结构。
线性结构:顺序表、单链表、栈、队列、串、广义数组。
非性结构:二叉树、图。
物理存储结构:分为顺序存储和链式存储。

基本操作:插入、删除、更新、查找,逆转等。
2、要熟悉数据结构各类专有名词含义;
3、掌握时间复杂度的计算或推导(即大O)。
4、重点掌握非线性二叉树的性质推导和证明(这里涉及到了一些数学知识),和图。

多上机调试各章的源码,只有这样才能加深对算法本身存在的思想的体会。学习数据结构其实就是学习算法思想。

❽ 怎么学好数据结构

数据结构作为大学计算机相关专业的学生来说是一门十分重要的课程,无论是以后算法思想的渗透,还是工作中程序代码的处理,都离不开数据结构的影子。但是因为数据结构知识较多,并且比较抽象,对于很多人来说学它就感到头疼。其实大可不必,数据结构的学习自然有其对应的方法。

还有一点,要想学习好数据结构,好的课程是必不可少的,如果大学老师讲的足够好的话完全可以带你领略数据结构的美丽风景,如果你想自学成才的话,推荐浙江大学陈越姥姥的课和清华大学邓俊辉老师的课,都十分透彻易懂。

❾ 怎样才能学好数据结构

一时间也写不出太具体的方法 就在网上为你找了一个前辈发的帖子 你看一下,肯定比我写的好。

-------------------------

学习数据结构这门课程至少要经历三个过程,方可真正
的掌握这门课程,得到一个满意的成绩。这个过程简单来说就是三个字:活→死→活。
首先,是一个学“活”的过程,就要要求我们对书中的每一个算法,能够在脑海中
建立起相应的模型,而不是死板的算法。比如树的遍历非递归算法,在入栈与出栈的过程
中,我们就要在脑海中形成访问树每个结点的过程,真正掌握住这个算法。这样,全书复
习下来,你的脑海中就有了整个数据结构的模型概念,对任何一个陌生的算法,将不感到
生疏和害怕。
有些同学到了此处就觉得数据结构已经学好,可以万事大吉了,其实这还远远不够
,如果参加考试,往往会拿不到高分,甚至还会纳闷,为何自己数据结构学的这样好,成
绩却不尽如人意,因此产生了批卷老师判错的想法。所以第二个过程,就是一个学“死”
的过程,这个过程要求,要记住书中的算法(功利一点就是要背诵会所报考学校的考试要
求的算法)。有的学校有别的特殊要求,也一并背会。如上海交通大学喜欢考平均复杂度
的分析这样的题目,我们在书上可以找到这样的分析一共十一个,全部背会,就免去了在
考场上分析的麻烦,如果连答案都能记住,那么,也不会因为粗心失分了。这一过程也许
有些枯燥,但却是最重要的过程,比如说背会了树的后序遍历非递归,遇到了像求某个结
点的所有祖先,两个结点的共同祖先这样的题,不用想,直接套用。这样才是考试的高分
的关键:在考场上,遇到考题,不用思考,直接从脑海中找匹配的算法,直接引用。
有了第二个过程的辛苦,我们就可以得到一个比较高的分数了,如果还想提高,就
要进行第三个过程,再学“活”的过程。这一个过程中就要要求我们,在第二步的基础上
,多进行思考,看看有哪些算法有共性,比如说:树的前序非递归遍历算法和图的深度优
先遍历算法是不是类似啊,有些什么不同,有些什么相同,为什么会相同;森林转化为二
叉树和图的生成树的算法也是这样,等等。总结出这种共性,这样就能正确有效的记忆算
法,同时,遇到难题不至于慌乱,能够从容下手解题。
对于总结共性问题上,这里举一小个例子,(呵呵,我当初总结出这个,并且和ka
oyan.com斑竹一具讨论确定后三天,就在2002年交大第一题考出类似东东)比如树的遍
历,不管是递归还是非递归,也不管是线索树,还是头结点有父母信息的树,它的遍历其实就是一个寻找到遍历的第
一个结点,然后再寻找它的后继结点的过程,我们归纳到此处,就可以试着总结一下三种
遍历的后继结点是哪个,有几种情况:
对于前序遍历,它的后继如下:
(1)若有左孩子,则后继是左孩子;
(2)若无左孩子,有右孩子,则后继是右孩子;
(3)若既无左孩子,又无右孩子,则是一片叶子;再讨论:
(a)若是其父母的左孩子,且父母有右孩子,则后继是父母的右孩子。
(b)若是其父母的左孩子,且父母无右孩子;
(c)若是其父母的右孩子。
b,c都表示这是某个节点的左子树前序遍历的最后一个节点,则需要找第一个有右子
树的“左祖先”(定义“左祖先”,即找第一个使得当前节点在这个祖先的左子树上),
然后后继就是这个祖先的右孩子。
对于中序遍历,它的后继如下:
(1)如有右孩子,后继是右孩子的最左下节点;
(2)若无右孩子,且是父母的左孩子,则后继就是父母;
(3)若无右孩子,且是父母的右孩子,则一直上溯到第一个“左祖先”(定义如前)
则后继就是这个祖先。若无这样的祖先,说明已经遍历完毕。
对于后序遍历,它的后继如下:
(1)若是父母的右孩子,则后继是父母;
(2)若是父母的左孩子,且父母无右子树,则后继是父母;
(3)若是父母的左孩子,父母有右子树,则后继是父母右子树的最先访问到的节点(
指向父母的右子树后,一直往左,若不行的话,往右一步,一直到叶子)
总结完了,想一想,我们还能得到哪些提示?经常有一类型题目,要求求某个结点
的直接前驱。其实求前序遍历的前驱和求后序遍历的后继是一样的,只不过把左换成右而
已,前序遍历的求后继和后序遍历的求前驱、中序遍历的求前驱和中序遍历求后继都有这
样的对称关系。因此,总结出共性的东西,许多题目就可以迎刃而解了。问一问读到这里
的读者,你现在能够自己在脑子里面,非常轻松地像上面那样,把这个例子里面的情况都
条理清楚地分析总结出来吗?如果现在还不行,到考试之前,你必须掌握到这种程度,才
能得到一个自己很满意的分数。
经过以上的三个过程复习,相信读者对数据结构的掌握就可以到达比较高的水平了
,如果参加考试,获得一个比较满意的成绩也很有希望了。当然,达到这一
步并不容易,大量的练习是真正掌握的必由之路。因此,我们建议大家能够下功夫把本书
中的题目完整地做一遍。能够真正把本书中的所有题都掌握,绝不仅仅意味着仅会了书中
这几百道题目,而是意味着对数据结构这门课程的理解,以及对问题的分析能力都有很大
的提高,这样在考场上即使遇到未曾见过的题目,也就可以从容应对了!

❿ 怎样学好数据结构

数据结构作为大学计算机相关专业的学生来说是一门十分重要的课程,无论是以后算法思想的渗透,还是工作中程序代码的处理,都离不开数据结构的影子。但是因为数据结构知识较多,并且比较抽象,对于很多人来说学它就感到头疼。其实大可不必,数据结构的学习自然有其对应的方法。

还有一点,要想学习好数据结构,好的课程是必不可少的,如果大学老师讲的足够好的话完全可以带你领略数据结构的美丽风景,如果你想自学成才的话,推荐浙江大学陈越姥姥的课和清华大学邓俊辉老师的课,都十分透彻易懂。

阅读全文

与如何学习数据结构相关的资料

热点内容
卸载程序报c怎么解决 浏览:392
一次性付款中介怎么交易 浏览:654
iphone以旧换新怎么处理数据 浏览:858
中国功率器件市场在哪里 浏览:452
现在国外什么产品出口最多 浏览:773
从税盘导出的数据要怎么打开 浏览:720
哪里看北交所交易信息 浏览:919
交易所有哪些运行设备 浏览:883
账套如何更改凭证金额信息 浏览:980
护照里面包含哪些重要信息 浏览:359
骑士联盟交易所怎么赚钱 浏览:769
美股交易软件都有哪些 浏览:211
出口产品销量怎么样 浏览:626
信息num是什么意思 浏览:471
微信小程序怎么获取红包 浏览:207
农产品和药材电子交易中怎么止损 浏览:98
腾讯麻将小程序怎么改女声 浏览:93
权证交易卖空是什么意思 浏览:298
程序员皮肤干燥如何保养 浏览:449
如何看假面骑士的程序 浏览:351