数组和链表的优缺点
数组的所有元素在内存地址中必须是在一起的,不能分开。如果需要插入元素,那就要数组中的所有值全部转移到一连串挨着的内存地址中,如果内存中无法提供与数组等同的连接的地址的话,数组将无法进行插入操作。
链表在插入元素时,无需移动元素,链表中的元素可以分开来保存,只需要在元素中记录下一个元素的内存地址。
在需要读取链表的最后一个元素时,不能直接读取,因为不知道他所处的地址,必须先访问元素#1,从中获取元素#2的地址,在访问元素#2获取元素#3的地址,以此类推,直到访问最后一个元素。需要同时读取所有元素时,链表的效率很高:你读取第一个元素,根据其中的地址再读取第二个元素,以此类推。但如果需要跳跃,链表的效率很低。
数组与此不同,你知道其中每个元素的地址。假设有一个数组,包含五个元素,起始地址为0, 那么最后一个元素的地址为4
需要随机的读取元素时,数组的效率很高,因为可以迅速找到数组中的任何元素。在链表中,元素不是靠在一起的,你无法迅速计算出第五个元素的内存地址,而必须从头开始一个一个访问。