数据结构是一门抽象的学科,其本质目的是为了组织内存友好的结构形式来把现实中的数据放入内存之中。根据相应的结构衍生出一系列操作数据的方法,即算法。
学习数据结构难吗?答案是肯定的。因为大多的教程一上来就讲述诸如时间复杂度、空间复杂度、抽象数据等概念,而忽略了探寻其本质。弄清楚一下几点,对学习数据应该会有一定的帮助:
- 只有两种物理存储结构:连续的和不连续的,因为内存的存储单元的地址(编号)是0、1、2、3……(一维地址空间、或者线性地址空间)。
- 存储的本质是将现实世界的数据组织成为逻辑结构,然后再把逻辑结构的数据映射到物理结构中。在这个过程中抛去数据的其它属性,只留下数据的两个属性:数据的值、数据之间的关系。
- 实现2中将每个数据的关系都联系起来,当这些数据紧挨着排列时,就形成了数组;当这些数据散落排列时就生成了链。数组和链即是最本是的数据结构,其他数据结构都是对数组和链的进一步抽象。
- 当然这只是简单的描述,要真正掌握数据结构,还需要深入理解它的设计哲学。
这个系列根据《hello,算法》来学习数据结构,这本书以大量的可视化的图像来帮助理解、配备的多种语言的算法实现,无论你是哪种语言的使用者,都值得一读。 我使用Rust语言来学习数据结构,因为我正在学习Rust语言,相信这个过程也能巩固Rust语言的知识。