数据结构之顺序表和链表的比较(详解,附图)

一、存储结构:

  • 顺序表:顺序表采用顺序存储结构,内存空间是连续
    在这里插入图片描述任意一个元素 i 的存储地址Loc(ai)为:
    Loc(ai) = Loc(a1) + (i-1) * len
    其中**Loc(a1)**被称为基地址,len为每个元素占用存储空间的长度,在顺序表创建时,系统直接分配一块连续的地址

  • 链表:链表采用链式存储结构,其内存空间不连续
    在这里插入图片描述
    每个元素在创建时,系统随机分配地址,然后各结点通过指针连接起来形成线性结构

二、空间利用

  • 顺序表在创建时直接分配固定的空间大小(底层是数组),当加入某个元素,空间不够时,即数组空间存满了,就要进行扩容,开辟新的空间(需大于当前空间),拷贝元素,释放旧空间
    在这里插入图片描述
  • 链表则是创建一个元素就去分配一块空间,不会出现链表空间不够的情况,但链表空间利用率一般比顺序表低,因为链表的每个结点有元素域和指针域,存放数据的只有元素域
    在这里插入图片描述

三、基本操作:

1.插入和删除:

  • 顺序表在插入时,要将插入点及后面的所有元素往后移一位,再插入,删除时,就让删除点及后面的元素都往前移动一位。
    在这里插入图片描述

  • 链表在插入时,只需要改变前一个元素与插入元素的指针,删除时只需要改变前一个元素的指针
    在这里插入图片描述
    2.访问某个位置的元素:

  • 顺序表底层是数组,所以可以直接访问对应位置的元素,如数组是eles,返回eles[i]即可

  • 链表找指定位置 i 的元素,则要从头访问,一直找当前元素的next,需要找 i - 1 次。

总结

顺序表和链表各有优缺点,它们的使用需要根据具体情况来定,对于访问频繁,插入、删除情况较少就选择使用顺序表,反之则使用链表。

顺序表和链表的代码实现可以参考这两篇文章:
1.顺序表
2.链表

在这里插入图片描述
觉得有用的小伙伴可以点个赞哦,感谢!!!

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Easenyang

你的鼓励将是我创作的最大动力

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

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

打赏作者

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

抵扣说明:

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

余额充值