原文连接:http://blog.csdn.net/wangshihui512/article/details/9787699
程序员
数组:
数组
数组是将元素在内存中连续存放,因为每一个元素占用内存相同,能够经过下标迅速访问数组中任何元素。可是若是要在数组中增长一个元素,须要移动大量元素,在内存中空出一个元素的空间,而后将要增长的元素放在其中。一样的道理,若是想删除一个元素,一样须要移动大量元素去填掉被移动的元素。若是应用须要快速访问数据,不多或不插入和删除元素,就应该用数组。数据结构
链表:C++语言中能够用数组处理一组数据类型相同的数据,但不容许动态定义数组的大小,即在使用数组以前必须肯定数组的大小。而在实际应用中,用户使用数组以前有时没法准确肯定数组的大小,只能将数组定义成足够大小,这样数组中有些空间可能不被使用,从而形成内存空间的浪费。链表是一种常见的数据组织形式,它采用动态分配内存的形式实现。须要时能够用new分配内存空间,不须要时用delete将已分配的空间释放,不会形成内存空间的浪费。ide
(1) 从逻辑结构角度来看 b, 链表从堆中分配空间, 自由度大但申请管理比较麻烦.
ui
数组和链表的区别整理以下:
数组静态分配内存,链表动态分配内存;
数组在内存中连续,链表不连续;
数组元素在栈区,链表元素在堆区;
数组利用下标定位,时间复杂度为O(1),链表定位元素时间复杂度O(n);
数组插入或删除元素的时间复杂度O(n),链表的时间复杂度O(1)。 spa