前提

我在学习编程过程中,发现仅仅学习某门编程语言的基本语法,仅仅只是摸到了编程的门槛,到了一定阶段后,便失去了方向和目标。直到在学习了面向对象和数据结构后,才发现真正打开了编程的大门。
面向对象和数据结构无关编程语言,是一种通用编程思想。
我的代码量也是在学习数据结构的过程中逐渐增加的。这里就说说怎么自学数据结构

首先最重要的就是要有一个动机,这是防止自己三分钟热度的关键,若是是科班出身或者选修的数据结构这门课,有学业作业的压力,自然会自发的学习,但是自学的话,很容易半途而废,在开始之前一定要给自己设定一个动机,如进入某某大厂。

我的基础

在学习数据结构之前,我自学了java,对面向对象有一定了解,没有学习C++直接进入数据结构,因此所有内容我都是用java实现的,在数据结构之前,你最好有一个面向对象的基础

认识数据结构

要学习数据结构,首先要知道数组、链表、栈、队列、散列表、跳表、图、树、堆、字典树10种数据结构是什么,这时候你可能需要丛书中,或者网络上了解,cb推荐《大话数据结构》这本书。根据个人习惯不同,有的人习惯直接从实践中学习,不是没有书就不能学习了。

入门

一般我们都是从链表入手,了解链表的组成(增删查改等方法的实现),作用(实例),常用基本算法(链表的逆转能),这个过程一般是一边动手一边学习,也就是堆代码量的阶段。
非循环单向链表

深入

在学习的时候呢,可以去LeetCode上按照标签筛选相应的题目,选择简单或者中等难度来增进了解。

或者通过算法可视化网站visualgo去直观的了解算法实现过程,下图是该网站的prim算法最小生成树
prim算法实现最小生成树

在对于某一种数据结构足够了解,能够独自实现其完整的类和基本的类方法后,便可以进入下一种数据结构的学习。然后重复这个过程。

最后

在这一整套流程下来之后呢,你会发现之前某些一头雾水的问题,原来是可以用某个数据结构就能解决了。如一个任意长度的,带任意小括号的加减乘除四则运算,原来可以用解决。

当然学习完数据结构也只是个开始,如果想挑战一些高难度的题,还会涉及一些算法问题,这就是另一方面的学习了。



Last modification:April 5th, 2020 at 11:16 am
If you think my article is useful to you, please feel free to appreciate