数组和链表简单对比

来源:互联网 发布:it人才缺口 编辑:程序博客网 时间:2024/06/07 23:58

数组:相同数据类型的元素按一定顺序排列的集合,就是把有限个类型相同的变量用一个名字命名,然后用编号区分他们的变量的集合,这个名字称为数组名,编号称为下标
场景:倘若数组中第一个元素在地址A,则数组第二个元素就在地址A+1
数组的特性:
1.数组必须先定义固定长度,不能适应数据动态增减
2.当数据增加时,可能超出原先定义的元素个数,当数据减少时,造成内存浪费
3.数组查询比较方便,根据下标就可以直接找到元素,时间复杂度O(1);增加和删除比较复杂,需要移动操作数所在位置后的所有数据,时间复杂度为O(N)


链表:是一种物理存储单元上非连续,非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的。

场景:链表每个节点没有相对固定的位置关系。某个节点在地址A,其后的节点不一定在A+1,而在内存的其他空闲区域,
呈现一种随机的状态
链表的特性:
1.链表动态进行存储分配,可适应数据动态增减
2.插入、删除数据比较方便,时间复杂度O(1);查询必须从头开始找起,十分麻烦,时间复杂度O(N)
常见的链表:
1.单链表:通常链表每一个元素都要保存一个指向下一个元素的指针
2.双链表:每个元素既要保存到下一个元素的指针,还要保存一个上一个元素的指针
3.循环链表:在最后一个元素中下一个元素指针指向首元素

链表和数组都是在堆里分配内存
应用:

如果需要快速访问数据,很少或不插入和删除元素,就应该用数组;相反, 如果需要经常插入和删除元素就需要用链表数据结构了


0 0