链表和数组

1. 数组静态分配内存,链表动态分配内存; 
2. 数组在内存中连续,链表不连续; 
3. 数组元素在栈区,链表元素在堆区; 
4. 数组利用下标定位,时间复杂度为O(1),链表利用引用定位元素时间复杂度O(n); 
5. 数组插入或删除元素的时间复杂度O(n),链表的时间复杂度 O(1)。

总结:

     如果是数据数量不发生变化,就使用数组;如果数据数量经常发生变化,就使用动态数组(ArrayList、vector)或双向链表LinkedList;如果查询多,而插入删除少,使用ArrayList,如果查询少,而插入删除操作多,则使用LinkedList。

猜你喜欢

转载自geeksun.iteye.com/blog/1709418