⑴ 如何学习数据结构
学好数据结构首先学好C语言指针,数据机构内在串联全靠指针作用,指针主要难在本身是带地址的变量,再加上指针的指针串联导致很多人误解,先要学会理解,要对计算机的内存结构有个大概了解,对一些常见的进制之间的转化以及字节对齐等有行程基本的认知。
理解概念,建立抽象模型,比如简单的队列,先进先出模式,在设计数据模型的时候,就需要有一个对头和队尾的概念,数据需要从队尾插入队头出来,基本上三个属性就出来了,一个对头指针,一个队尾指针,一个结构体数值,常见的方法有删除清空队列,有插入队列操作,出队操作,创建初始队列操作等等,这样子抽象数据模型,形成自己的思维理解,然后再进行代码设计。
需要变通实践,代码调试变通,数据结构的组合无穷变着写代码。算法的奥妙就是在于变换,放在数据结构也是这个样子,掌握基本的数据机构算法,在学好数据结构的前提下可以学习下一本经典的算法书《算法导论》这个是算法的经典书籍。
学习数据机构不要想着有什么技巧或者方法,把自己调整到最佳的学习状态,方法自然就有了,不要给自己设置什么限制,设置底线只会让自己处在一个围墙之内,学习新东西就是突破自我的一个过程,不要在开始学习的时候给自己过大的压力。
⑵ 如何学习数据结构与算法
1、记住数据结构,记住算法思想(是什么)记住数据结构最直观的东西;记忆该数据结构的定义、性质、特点等。很多东西的理解和创新都是以记忆为前提的。
2、进行大量相关编程练习,用编程语言去实现某一数据结构上的算法(怎么办)
很多时候,理解一个算法很容易,很容易在纸上去模拟一个算法的实现过程。但具体实现,则是另一回事。一定得先自己思考,然后再去看书中给的编程语言实现。
3、“记住”特定情景下,利用某一特定的数据结构,去解决问题 (为什么+怎么办)
每介绍一种数据结构,浙大数据结构与算法的MOOC课程都会有一个实际问题来作为“引子”,回答了“这种数据结构为什么会出现”。有的是为了实现特定的操作,有的是为了时间和空间上(大部分考虑的是时间复杂性)效率的更高(所以,没事的时候,分析一下算法的时间复杂性)。这些东西,我们也须理解记忆。每一数据结构都有其特性,去解决某一类问题,我们需要去记忆,去感悟。
4、形成一个属于自己的知识体系
如何去“记住”(记好笔记,多多复习);在学习过程中,遇到挫折,产生挫败感该如何处理(这个是必然会发生的,总有难以理解不会的地方);如何进行心态方面的调整(欲速则不达,不过也有”敏捷学习“的概念)。
⑶ 关于C语言数据结构,该如何学习和入门
说些我的见解:
1)首先明确数据结构研究的对象:研究的是如何存储、操作数据,楼主应该关心每种数据结构的数学模型,可以用在什么场合,各种性能怎么样:例如增加数据,查找数据,删除数据都要花多少时间与内存。
学完之后要知道每个实际情况该用什么数据结构。如果能自己设计出来更适合实际需求的数据结构,那就强了。
2)C语言只是表现形式,不是核心:像着名的《算法导论》描述数据结构用的都是伪代码。真正学好C语言,只要理解数据结构的数学模型,就可以轻松写出代码。所以像这本书C语言代码实现的部分,应该能翻译成数学模型来看。熟练掌握一门语言是和计算机沟通的基础。
3)本书使用了面向对象,即C++的一些思想,目的是以后可以直接用数据结构,而不必重写代码。Destory只是一些快捷方式,在具体环境中实现,这些结构是没必要记的,应该根据需求楼主可以自己写出来。其实很多语言都提供了这些数据结构的实现,C++里的叫STL。
总之:核心是数学模型,顺便熟悉一下C语言,写些比较大的程序时,可以把数据结构包装成书上那样一个大的结构,方便使用。最后,多写程序是很有好处的,可以锻炼上面所有的技能。