C++数据结构怎么学习?
学会数据结构;
导学阶段。
最初并没有直接看书,而是先打算先看视频,因为视频比较好理解啊,找视频的方法就是百度,所以当时找到的最好资源就是开课吧的教程,但对小白来说还是够的,特别基础,讲得非常仔细。
这是一个很好的例子,从最开始的阵列、线性表,到后面的栈和队列,再到更复杂的二叉树、图表、散列表,大概有几十个视频,那时是暑假,我按照每天一个视频的进度来看,看的时候还是要不时练习,这样对理解会更有帮助。
读过这个系列的视频后,我又转而开始啃书,视频中讲的都是数据结构的基本知识,而书中除了基本知识外,还有一些算法问题,比如,你学习了线性表和链表之后,书中就会有相关的算法问题,例如数组的元素替换,链表的倒置等,
加强学习阶段
在学习完第一个视频+书本后,我们应该已经对数据结构有了初步的了解,对一些简单的数据结构算法也应该有所了解,例如数据栈的入栈和出栈,队列的进组和出组,二叉树的先序遍历和后续遍历,层次遍历,图的最短路径算法,深度优先遍历等等。
具备一定的基础后,我们需要从哪些方面加强学习呢?
这要看你学习数据结构的目的是什么了,比如你学习数据结构是为了做算法题,那么你就应该把重点放在学习算法上,后面我们还会有一篇关于如何学习算法的文章,敬请关注。
当然,当时我主要是复习考研,所以还是以专业课历年真题为主,像我们的卷子里就有很多关于哈希表,最短路径算法,KMP算法,Huffman算法和最短路径算法的应用。
对试卷上的一些知识点,我觉得掌握得不太好,就买了《王道数据结构》和一些没啥卵用的书回来看,再次强化了基础。
而且,由于我们的复考通常是对一些比较经典的算法问题进行考察,所以我又花了大量的时间来学习这些算法题,而这些并不是数据结构的基本算法,所以可能无法在以前的书籍和视频中找到答案。
所以我又在网上搜到了另一个系列的视频“小甲鱼的数据结构视频”,里面除了讲解数据结构外,还讲解了更多的经典算法题目,比如八皇后问题、汉诺塔问题、马踏棋问题、商旅问题等等,这些对于初学者来说真的是很难的,通过视频学习效果更好。
实习阶段
纸上谈兵终觉浅薄,绝知此事要躬身。大家都知道,算法题和数学题一样,需要多加练习,而且考研时还要手写算法,所以我经常在纸上写(抄)算法,别说你,就是抄,多抄几遍也有助于理解。
有许多基本算法,如层次遍历、深度优先遍历、广度优先遍历、多写一些遍历,以及稍微复杂一些的Dejerstra算法等,如果不多写一些遍历,你真的记不住。
当然,除了写在纸上,更好的方法是在电脑上敲键盘,写Java用Java,写C++用C++写,总之,就是用自己擅长的语言实现,尴尬的是,我当时只会写c,所以只能老老实实用devc++编写简单的c语言程序。
此时,我们也算是学到了数据结构的基本知识,至少了解了每一种数据结构的特征,会写通用的数据结构算法。
推荐资源
书籍。
如果你正准备考研,那么“天勤数据结构”“王道数据结构”这两本书可别错过。
严蔚敏《数据结构与C语言版本》是一本大学本科计算机专业常用的教材,可查阅,官方也有配套教学录像。
《大话数据结构》官方教材大家都懂,比较不接地气,这本书对很多新手来说是比较适合入门的。
如果你是学Java的,并且想要一本Java语言描述的数据结构方面的书,你可以试试这本,但是这本书明显比较复杂,而且不适合作为入门。