数组和链表的关系可以类比卡车和火车的关系。
接下来看看数组以及链表在内存中是怎么表示的。
首先我们来看数组,假设你要装载的货物是16个字节,那么如果你想用数组来装载数据的话该怎么办呢?
很显然,你需要从内存中申请16个字节,而且是连续的字节,就像卡车一样,一上来容量就固定了。
这时如果你想在容量16个字节的数组中再装入8字节数据该怎么办?没办法,原来的数组就不再可用了,你需要再次从内存中申请24字节,并且把原来的数据copy过来,此后再把剩余的8字节装入数组。
接下来,我们看链表,依然假设需要装载的货物是40字节。链表与数组截然不同的地方在于就像火车一样,你无需一次性申请40字节的空间,而是一节车厢一节车厢的申请,而且更棒的是这些车厢也不需要和数组一样是连续的。
从这里也能看出来,数组是静态的,创建好后就不能改动;而链表是动态的,你可以根据需求来动态的增加或者减少链表的长度。