数组
-
数组在内存中连续
-
使用数组之前,必须事先固定数组长度,不支持动态改变数组大小
-
数组从栈上分配内存,使用方便,但是自由度小
-
数组在内存中顺序存储,可通过下标访问,访问效率高
-
数组的大小是固定的,所以存在访问越界的风险
-
增加、删除一个元素需移动大量元素
-
数组访问效率高。当线性表的操作主要是进行查找,很少插入和删除时,宜采用数组结构
链表
- 链表采用动态内存分配的方式,在内存中不连续
- 支持动态增加或者删除元素
- 链表从堆上分配内存,自由度大,但是要注意内存泄漏
- 链表访问效率低,访问链表需要从第一个元素开始,一直找到需要的元素位置。如果想要访问某个元素,需要从头遍历
- 只要可以申请得到链表空间,链表就无越界风险
- 增加、删除一个元素只需要修改指针
- 链表插入、删除效率高,当线性表要求频繁插入和删除时,宜采用链表结构