顺序表和链表的区别(优缺点)详解

顺序表和链表是线性表的两种实现方式,都用来存储逻辑关系为“一对一”的数据。

顺序表和链表最本质上的不同,在于它们存储数据的方式,或者说存储结构不同。顾名思义,顺序表是将数据按照次序存储起来,并且数据集中存放在内存中;链表是将数据通过指针"链"起来,各个数据元素可以随意存储在内存中。

顺序表和链表在存储结构上的区别,如下图所示:

图 1 顺序表和链表的区别

图 1 顺序表和链表的区别

不同的存储结构,导致了顺序表和链表有以下几个方面的区别。

1、开辟内存空间的方式

顺序表需要将所有数据集中存放在内存空间中,因此往往会一次性申请大量的空间,打好提前量,以备后续使用。

链表存储数据时,讲究用多少内存就申请多少,后续需要可以再申请。

也就是说,在申请内存空间这件事情上,顺序表需要未雨绸缪,而链表只顾眼下即可。实际开发中,当数据量不确定,又或者内存“碎片化”严重,无法申请足够大的一整块空间,就可以尝试用链表存储数据。

所谓“内存碎片”,指的是那些因容量很小(1KB甚至更小)无法再利用的内存空间。

2、空间利用率

关于顺序表和链表在空间利用率上的对比,有两种完全不同的说法。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

数据结构和算法教程(C语言版)

创作不易,多多支持!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值