图解数组和链表

有时候需要在内存中存储一系列元素。
比如待办事项,用数组还是链表呢?

数组意味着所有待办事项在内存中都是相连的(紧靠在一起的)。
图解数组和链表

图解数组和链表

链表中的元素可以存储在内存
图解数组和链表

链表的每个元素都存储了下一个元素的地址,从而使得一系列的随机的内存地址串在了一起。

图解数组和链表

只要有足够的内存空间,就能为链表分配内存。

数组的优势

当同时读取所有元素时,链表的效率很高,读第一个,读第二个,以此类推。
但当你需要跳跃,链表的效率就很低了。

数组,则很方便读取每一个元素的内容。因为知道第一个,就知道了所有的地址。它们是连在一起的。
图解数组和链表

数组和链表操作的时间复杂度

图解数组和链表

插入多,读取少。用链表。
插入少,读取多。用数组。

在中间插入数据,哪个更好呢

链表更方便一些,只需要修改它前面的那个元素指向的地址就可以了。

图解数组和链表

使用数组时,必须将后面的元素都向后移动。如果空间不足,还要重新复制新的空间。

删除数据,哪个更好呢

也是链表更好一些。
只需要将前一个元素指向的地址更改即可。
使用数组,则必须将后面的元素都向前移动。
图解数组和链表

但是实际的应用中,数组用的更多一些。因为它支持随机读取。


本文转自TBHacker博客园博客,原文链接:http://www.cnblogs.com/jiqing9006/p/7615467.html,如需转载请自行联系原作者