数据结构 ——— 顺序表和链表的区别以及各自的优缺点

ops/2024/10/24 23:03:27/

目录

顺序表链表的区别

一、存储空间上

二、下标的随机访问

三、任意位置插入或者删除元素

四、添加数据

五、应用场景

六、缓存利用率

顺序表链表的优缺点

顺序表的缺点

链表的优点(和顺序表的缺点对应)

顺序表的优点

链表的缺点(和顺序表的优点对应)

 小结


顺序表链表的区别

一、存储空间上

  • 顺序表的存储空间物理上一定连续
  • 链表的存储空间逻辑上连续,但物理上不一定连续

二、下标的随机访问

  • 顺序表支持下标的随机访问(有效空间内),且时间复杂度为:O(1)
  • 链表不支持下标的随机访问,查询节点数据的时间复杂度为:O(N)

三、任意位置插入或者删除元素

  • 顺序表在头插或者中间插入数据时,要挪动元素,效率低,最坏的情况下时间复杂度为:O(N)
  • 链表在任意位置插入或删除数据时,只需要修改指针的指向即可,在查询到指定节点的情况下,插入删除的时间复杂度为O(1)

四、添加数据

  • 动态顺序表添加数据时,当空间不够时需要扩容,扩容就会存在原地扩容、异地扩容和浪费空间的情况,降低了效率,也浪费存储空间,因为是连续的物理空间,不能部分释放
  • 链表没有扩容的概念,是按需申请空间,按需释放空间,不会存在浪费的情况

五、应用场景

顺序表应用在元素高效存储和频繁访问,因为支持下标的随机访问
链表应用场景在任意位置的插入和删除频繁

六、缓存利用率

顺序表的缓存利用率高
链表的缓存利用率低


顺序表链表的优缺点

顺序表的缺点

前面部分的插入删除数据的效率低,因为需要挪动数据,最坏的情况下是O(N)
当空间不够的时候就需要扩容,且只要存储的数据越来越多,基本都是异地扩容,那么效率就会底下,且还存在空间浪费的情况

链表的优点(和顺序表的缺点对应)

在缺点指定的节点情况下,任意位置的插入删除数据都是O(1)
且不存在扩容的情况,因为是按需申请释放空间

顺序表的优点

支持下标的随机访问,可不要小看下标的随机访问,只要支持,就能实现效率为 O(long N) 的二分查找法等其他操作
尾插尾删的效率不错,在有 size 有效数据长度的情况下,配合下标的随机访问,效率为O(1)

链表的缺点(和顺序表的优点对应)

不支持下标的随机访问,那么就实现不了二分才查找法和及其相关的操作


 小结

顺序表链表各有各的优缺点,在实际应用场景中,可以根据不同的需求,应用不同的结构
当需要支持下标的随机访问时,可以考虑使用顺序表
当要在任意位置频繁插入删除数据时,可以考虑使用链表


http://www.ppmy.cn/ops/128170.html

相关文章

Redis 分布式锁

如果追求高可用性(AP) 就采用redis 如果追求高一致性(CP) 就采用zookeeper 加锁方式:set lockKey uniqueId NX PX expireTime lockKey可以根据业务自己定义(如订单)uniqueId是为了不解错锁(uniqueId可以是session I…

502 错误码通常出现在什么场景?

服务器过载场景 高流量访问:当网站遇到突发的高流量情况,如热门产品促销活动、新闻热点事件导致网站访问量激增时,服务器可能会因承受过多请求而无法及时响应。例如,电商平台在 “双十一” 等购物节期间,大量用户同时…

freeswitch-esl 三方设备实现监听功能

使用场景: A和B在通话中,C想监听A和B通话内容 方法一: 修改拨号计划<extension name="global" continue="true"><condition><action application="info"/>

【K8S系列】Kubernetes pod节点Unknown 问题及解决方案详解【已解决】

在 Kubernetes 中&#xff0c;Pod 的状态为 Unknown 表示无法获取 Pod 的当前状态。这通常意味着 Kubernetes API 服务器无法与 Pod 所在的节点通信&#xff0c;或者 Kubelet 进程遇到问题。以下将详细介绍 Unknown 状态的原因、解决方案以及如何配置健康检查以提高系统的稳定性…

node16 linux安装node环境 node.js16

Vue 3 最低需要 Node.js 版本是 12.20.0&#xff0c;这是因为 Vue 3 在创建项目时会使用一些新特性&#xff0c;这些特性需要较新版本的 Node.js 支持。如果你使用的 Node.js 版本低于 12.20.0&#xff0c;你可能会遇到兼容性问题&#xff0c;例如无法正确安装 Vue 3 或者在开发…

实现重试只知道Spring Retry?试试Spring Boot 整合 Fast Retry 来实现重试机制

&#x1f604; 19年之后由于某些原因断更了三年&#xff0c;23年重新扬帆起航&#xff0c;推出更多优质博文&#xff0c;希望大家多多支持&#xff5e; &#x1f337; 古之立大事者&#xff0c;不惟有超世之才&#xff0c;亦必有坚忍不拔之志 &#x1f390; 个人CSND主页——Mi…

20240818 字节跳动 笔试

文章目录 1、编程题1.11.21.31.4岗位:BSP驱动开发工程师-OS 题型:4 道编程题 1、编程题 1.1 小红的三消游戏: 小红在玩一个三消游戏,游戏中 n 个球排成一排,每个球都有一个颜色。若有 3 个颜色相同的球连在一起,则消除这 3 个球,然后剩下的球会重新连在一起。在没有 …

动态规划 —— 斐波那契数列模型-第 N 个泰波那契数

1. 第 N 个泰波那契数 题目链接&#xff1a; 1137. 第 N 个泰波那契数 - 力扣&#xff08;LeetCode&#xff09;https://leetcode.cn/problems/n-th-tribonacci-number/ Tn3 Tn Tn1 Tn2 可以转换为 Tn Tn-3 Tn-2 Tn-1 由上图可以看出T3等于T0T1T2,T4T1T2T3以此类推后面的…