对于绝大多数教程或者书籍,讲解数据结构的时候往往会提到算法,讲解算法的时候也会不自觉得提到数据结构,这给很多初学者造成了错误的印象,认为数据结构和算法是一码事。
注意,数据结构与算法是两个完全不同的学科。数据结构研究的是如何存储数据,存储方案分为线性表、栈和队列、数组和广义表、树和图等。算法研究的是解决问题的思路,比如对一组数据进行排序,可以用冒泡排序算法、插入排序算法、快速排序算法等。
之所以数据结构和算法结合起来讲,是因为它们的联系非常紧密。大家应该都知道“程序 = 数据结构 + 算法”这个公式,简单理解就是:程序员编写的程序是数据结构和算法构成的。
对于任意一段程序,编写它的初衷一定是为了方便用户对数据进行处理。比如学生信息管理系统,实现此系统的目的是为了方便对学生的信息进行增、删、改、查操作,其中如何存储众多学生的信息属于数据结构的研究范畴,而实现对学生信息的增、删、改、查属于算法的研究范畴。
数据结构和算法是任何一个程序员必须了解的,因此很多作者在讲解数据结构的同时,会扩展一些关联紧密的算法,反之在讲算法的时候也会不自觉地扩展一些数据结构的知识。
那么,数据结构和算法要掌握哪些知识呢?
除非你只想深入钻研算法,可以阅读《算法导论》之类的书籍。否则,我给大家分享一张学习数据结构和算法的思维导图,它涵盖了数据结构几乎所有的知识点,还包含一些常用的、基础的算法。

在这张图中,不仅罗列了知识点,还针对每个知识点推荐了相应的讲解文章。掌握图中所有的知识点后,你的数据结构和算法基础能达到中等靠上的水平。
这张图还适合考研的小伙伴使用,哪个知识点不会随时看对应的文章,非常方便。
数据结构和算法是两个独立的学科,数据结构研究的是数据的存储问题,而算法研究是的解决问题的方法(思路)。
解决实际问题,既需要用到数据结构的知识,也需要用到算法知识,数据结构和算法经常放在一起讲解。最后给大家推荐一套我原创的数据结构和算法教程(网址是 xiexuewu.github.io),教程在讲解数据结构的过程中,也会讲解一些关联紧密的算法,并提供了完整、可运行的 C 语言程序,让每位读者都能学有所用,用有所成。