线性表不仅可以顺序存储,也可以链式储存,和顺序储存不一样的是,链式储存是一种地址不连续的储存方式,其本质在于储存的时候我储存两个东西,一个是储存的元素,另一个是下一个元素的地址,数据的逻辑关系是用地址来储存。
我们管这两部分信息叫做结点
那么为什么要有顺序存储和链式存储呢?有什么专门的优势吗?顺序储存由于地址是连续的,所以储存的时候我们很容易知道顺序存储元素的位置,从而再O(1)的复杂度上查找到相应的元素,但是其缺点是删除与增添元素,需要将修改元素后面的所有元素修改位置,后向后移一个单位或者都向前移一个单位,所以复杂度就明显上来了,O(n)的复杂度。
另外链式存储的好处与缺点正好和线性存储反过来,链式存储查找元素是O(n),因为需要头指针开始(头指针储存了第一个元素的地址),指向第一个元素的地址,通过第一个元素的地址,知道第一个元素是什么,然后通过第一个元素的指针域,知道第二个元素的地址,以此类推,这个就好比是贪吃蛇中夹带着连连看。
链式存储很好的优点是增添和删除元素,只要改变指针的地址指向就行了,而不需要大范围的更改。
所以用顺序储存和链式储存的关键在于需求,不一样的需求,建立不一样的数据结构存储类型。