定义
数组:一组具有相同数据类型的变量的集合。
链表:一种物理存储单元上非连续、非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的。
区别
逻辑结构:
(1)数组在内存中连续;链表采用动态内存分配的方式,在内存中不连续。
(2)数组在使用前事先固定长度,不能改变数组长度;链表支持动态增删元素。
(3)数组元素减少时会造成内存浪费;链表可以使用malloc或new来申请内存,不用时使用free或delete来释放内存。
内存结构:
数组从栈上分配内存,使用方便但自由度小;链表在堆上分配内存,自由度大但要注意造成内存泄漏。
访问效率:
数组在内存中顺序存储,通过下标访问,访问效率高;链表需要从头遍历访问,访问效率低。
越界问题:
数组大小固定,存在访问越界的风险;链表只要能申请空间就无越界风险。