数组:数组是将元素在内存中连续存放,由于每个元素占用的内存相同,可以通过下标迅速访问数组中的任何元素,但是增加或者删除一个元素,就需要移动大量的元素,比较缓慢。
链表:链表中的元素在内存中不是顺序存储的,而是通过指针存在一起,每个节点包括两个部分,存储元素的数据域与存储下一结点地址的指针域
如果访问链表中元素,需要从第一个元素开始,一直找到需要的元素的位置,所以缓慢。但是增加删除元素,只需要修改指针就可以,速度较快。
区别:
(1)存储位置:
数组逻辑上相邻的元素在物理存储位置上也相邻,而链表不一定;
(2)存储空间:
链表存放的内存空间可以是连续的,也可以不连续,但是数组则是连续的一段存储空间;
(3)长度的可变性:
链表的长度可变,数组不可变
(4)访问方式:
数组可以随机访问其中元素,链表必须顺序访问。
优缺点:
1)数组
优点:使用方便,查询效率高,内存为一连续区域
缺点:大小固定,不适合动态存储,不方便动态添加。
2)链表
优点:可动态添加删除,大小可变
缺点:查询效率低。