链表与顺序表的区别

本文对比了顺序表和单链表在空间和时间效率上的差异。顺序表空间利用率高,适合已知数据量,但插入删除操作耗时;单链表动态开辟空间,适合未知数据量,插入删除操作更快。顺序表查找修改元素时间复杂度为O(1),单链表为O(n)。选择哪种结构需根据实际需求权衡。
摘要由CSDN通过智能技术生成


前言


顺序表:顺序表是在计算机内存中以数组的形式保存的线性表,是指用一组地址连续的存储单元依次存储数据元素的线性结构,顺序表在逻辑上和物理上都是连续的。
单链表:单链表是一种链式存取的数据结构,用一组地址任意的存储单元存放线性表中的数据元素。链表中的数据是以节点来表示的,每个节点的构成:date( 数据元素) + next(下个元素存储位置),链表在逻辑上是连续的,在物理上是非连续的


一、空间上的比较

顺序表的实现一般是实现连续开辟一段空间,然后在进行数据的增删查改,所以顺序表一般是固定空间大小的。当空间不够需要扩容时,往往用原数组的倍数扩容
单链表则是一次只开辟一个结点的空间,用来存储当前要保存的数据及指向下一个结点或NULL的指针,所以单链表的空间大小是动态变化的。
当我们不知道要存储多少数据时,用顺序表来开辟的空间太大,就会造成一定程度上的浪费,而用单链表是实现时,因为是每需要存储一个数据时,才开辟一个空间,虽然有非数据项的指针占空间,但相比顺序表来说,浪费不是那么明显;反之,当我们知道存储的数据的数量大小时,用顺序表来开辟对应的空间大小,来存储数据,因为顺序表中每个元素的存储密度为 1,就完全不会有浪费的空间,而用单链表,因为每个结点都会有非数据项的指针,这种情况下在用链表就会造成空间的浪费。

二、时间上的比较

1.随机位置插入、删除元素的时间复杂度:

顺序表的元素是连续存储的,因此要在特定位置插入、删除元素需要把它之后的元素全部后移或前移一个元素的位置,时间开销很大;而单链表在插入或删除元素时,只需要改变它的前驱元素及插入或删除元素的指向即可。因此,顺序表在随机位置插入、删除元素的时间复杂度是O(n),单链表在插入随机位置插入、删除元素的时间复杂度是O(1)

2. 查找指定位置元素、修改指定位置元素的时间复杂度:

顺序表的结构就像是数组一样,可以用下标来访问它的元素,所以它的元素是支持随机访问的;相比之下,单链表的数据是链式存储的,它的元素是不支持随机访问的,想要知道某个元素,只能从头结点开始遍历整个链表,知道找到了该元素为止。因此顺序表访问随机元素的时间复杂度是
O(1),而单链表访问随机元素的平均时间复杂度是O(n),当需要查找或者修改指定位置元素时利用顺序表的下标就更为方便


总结

顺序表和单链表各有各的优缺点,使用哪一种好要结合具体的问题而言,不能一概而论。
在以后对数据的查询或者修改操作使用的比较频繁时,优先选择顺序表;在以后对数据的插入、删除操作使用的比较频繁时,优先选择链表。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值