顺序表和链表的区别

顺序表和链表的区别

  • 相同点
    1.都是线性表
    2.元素在逻辑上都是连续的(存储上顺序表连续,链表不连续)
    3.每个元素都有唯一的前驱和唯一的后继(注意:第一个元素没有前驱,最后一个元素没有后记—>循环链表除外)

  • 不同点
    1.底层存储空间不同:
    顺序表底层存储空间连续;
    链表不连续;
    2.插入和删除的方式不同:
    顺序表插入和删除得搬移后面的所有元素,效率低,时间复杂度为O(N);
    链表不需要搬移后面的元素,效率高,时间复杂度位O(1);
    3.随机访问:
    顺序表底层空间连续,支持随机访问,访问元素时间复杂度为O(1);
    链表底层空间不连续,不支持随机访问,访问元素时间复杂度为O(N);
    4.扩容:
    顺序表在插入时需要扩容–>开辟新空间,拷贝元素,释放就空间;
    链表在插入时不需要扩容;
    5.空间利用率:
    一般情况顺序表空间利用率较高(链表每个节点中需要存储date和next,顺序表只存储元素date);
    链表中的元素存储再一个一个节点中,而每个节点都是malloc出来的:频繁向堆申请小的内存块–造成内存碎片,效率低
    6.应用场景不同:
    顺序表适合:元素高效存储(因为链表每个节点要多存储next)以及访问操作比较多的场景;
    链表适合:任意位置插入和删除比较频繁的场景;
    7.缓存利用率:
    链表的缓存利用率低于顺序表;在这里插入图片描述在这里插入图片描述

  • 3
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值