数组(多用于查询检索多的时候)
在内存中连续储存,通过下标访问,访问效率高,不支持动态改变大小,自由度小
链表(多用于需要频繁插入,遍历)
动态内存分配,内存中存储不连续,每一个元素都要保存一个指向下一个元素的指针(双向列表则还需要保存只向上一个元素的指针),链表访问效率低,如果想要访问某个元素,需要从头遍历,支持动态增加或者删除元素,自由度大
中间插入/删除 时间复杂度为O(n):
链表:需要遍历
数组:数据的拷贝覆盖
在内存中连续储存,通过下标访问,访问效率高,不支持动态改变大小,自由度小
动态内存分配,内存中存储不连续,每一个元素都要保存一个指向下一个元素的指针(双向列表则还需要保存只向上一个元素的指针),链表访问效率低,如果想要访问某个元素,需要从头遍历,支持动态增加或者删除元素,自由度大
中间插入/删除 时间复杂度为O(n):
链表:需要遍历
数组:数据的拷贝覆盖