怎么学好数据结构?

如题所述

数据存储的目的是便于数据访问。这个关系就是数据结构。算法是计算机解题的模型:输入,输出,顺序执行,跳转,循环,分支,有限步骤。人大脑组织数据的方式有线,树,图三种逻辑结构,而计算机存储采用顺序,链式和两者混合的方式。前者是概念性的东西,后者是物理实现。线形结构:算法是迭代算法,你只要注意规模最小的情况下不出错,则算法一般不出错树形结构:算法是递归算法,你只要运用递归组合的方法,将简单情形组合出复杂情形简单情形不出错,则算法一般不会出错。图形结构:DFS:将图按照树形结构来处理,运用递归算法BFS:将图按章线形结构来处理,运用迭代算法必须会下面几个几个算法:(线形两个)将两个有序表合并为一个表,这个算法的变种很多,可以是链表,顺序表。涉及集合运算,归并排序,字符串处理。将一个顺序表的元素重新划分,左边的较小,右边较大。涉及快速排序,求字符串的逆串。(树形若干个)注意:有些可以实现,有些实现不了,可以拿来思考。前序线索化,递归实现,栈模拟递归,非栈式迭代实现。中序线索化,递归实现,栈模拟递归,非栈式迭代实现。后序线索化,递归实现,栈模拟递归,非栈式迭代实现。注意:会画表格,写出算法的逐个步骤即可。

温馨提示:答案为网友推荐,仅供参考
第1个回答  2018-01-03

不管学习什么,概念是基础,所有的知识框架都是建立在基础概念之上的。所以,第一遍看课本要将概念熟记于心,然后构建知识框架。比如看了一遍书后你至少应该知道数据结构包括线性结构、树形结构、图状结构或网状结构。线性结构包括线性表、栈、队列、串、数组、广义表等,栈和队列是操作受限的线性表,串的数据对象约束为字符集,数组和广义表是对线性表的扩展:表中的数据元素本身也是一个数据结构。除了线性表以外,栈是重点,因为栈和递归紧密相连,递归是程序设计中很重要的一种工具。树状结构中的重点自然是二叉树和哈弗曼树了。对于二叉树的很多操作都是基于对二叉树的遍历,掌握了如何遍历,很多问题也就迎刃而解了,比如对二叉树结点的查找访问、统计二叉树中叶子结点的数目、求二叉树的深度等。哈弗曼编码也有着很广泛的应用。对于图状结构,主要学习图的存储结构及图的遍历。多编程,水平肯定会提高,最重要的是能够养成一种感觉,就是对程序对算法的敏感,为什么那些牛人看一个算法一下子就看懂了?而自己要看很久才能弄懂,而且弄懂了过了一阵子又忘记了?其实这个是因为牛人们以前看的程序很多,编得也很多,所以他们有了那种感觉,所以我觉得大家应该多看程序,多写程序,培养自己的感觉。数据结构是实践很强的一门课程,光是“听”和“读”是绝对不够的,必须加强实践。在写算法的过程中,可能会出现很多问题,而不断修改的过程便是学习的过程。在这个过程中,只要全身心的投入了,便会发现很多乐趣。

第2个回答  2018-01-03

选对教材很重要如果你要学数据结构的话,首先推荐给你的是我们学校用的教材《数据结构》,严蔚敏的,这本书内容很严谨,代码也不错,不过是伪代码,不过毕竟是教学用书,质量肯定杠杠的。还有一本是《数据数据结构与算法分析》,这本书可以说是神作了,广为人知,作者是MarkAllenWeiss,曾被评为20世纪顶尖的30部计算机著作之一,我觉得你要是能认真啃下来,数据结构你肯定已经掌握得很透彻了。光说不练假把式要想学好数据结构,那光看书肯定是没用的。建议在看上面两本书的时候,把里面的代码都实现一遍,相信你“数据结构中的某些算法好难理解,一些语句不是很容易明白”的问题应该就能解决。然后在此基础上,你可以做一些题,除了网上买的习题集之外,你只需要加上tag你就能按照类别刷题,而且这里面的题都分难易程度,你可以由简到难来做,循序渐进,帮助应该挺大的。

相似回答