我使用了很多列表和数组,但是我还没有遇到这样一种情况:数组列表无法像链接列表一样容易地使用。我希望有人能给我一些有关链表何时明显更好的例子。
在以下情况下,链表优于数组:
您需要从列表中进行固定时间的插入/删除操作(例如,在实时计算中,时间可预测性至关重要)
您不知道列表中有多少个项目。对于数组,如果数组太大,可能需要重新声明并复制内存
您不需要随机访问任何元素
您希望能够在列表中间插入项目(例如优先级队列)
在以下情况下最好使用数组:
您需要对元素进行索引/随机访问
您可以提前知道数组中元素的数量,以便为数组分配正确的内存量
依次遍历所有元素时需要速度。您可以在数组上使用指针数学来访问每个元素,而您需要基于指针为链接列表中的每个元素查找节点,这可能会导致页面错误并可能导致性能下降。
内存是一个问题。填充的阵列比链接的列表占用更少的内存。数组中的每个元素只是数据。每个链接列表节点都需要数据以及指向链接列表中其他元素的一个(或多个)指针。
数组列表(如.Net中的数组列表)为您提供了数组的好处,但可以为您动态分配资源,因此您不必担心列表大小,您可以轻松删除任何索引的项目,而无需付出任何努力或重新改组周围的元素。在性能方面,数组列表要比原始数组慢。
问题来源于stack overflow
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。