【顺序表和链表的对比】

news2024/12/23 10:47:48

前言:
我们已经学习过了顺序表和链表的一些知识,在实际运用中我们不能笼统的说哪种存储结构更好,由于它们各有优缺点,选择哪种存储结构,则应该根据具体问题作出具体的分析,通常从空间性能和时间性能上作比较。

题目

  • 1.空间性能的比较
    • 1.1存储空间的分配
    • 1.2存储密度的大小
  • 2.时间性能的比较
    • 2.1存储元素的效率
    • 2.2插入和删除操作的效率
  • 3.区别

1.空间性能的比较

1.1存储空间的分配

1.顺序表的存储空间必须预先分配,元素个数扩充受一定限制,易造成存储空间浪费或空出现象;
2.而链表不需要为其预先分配空间,只要内存空间允许,链表中的元素个数就没有限制。
3.基于此,当线性表的长度变化较大,难以预估存储规模时,宜采用链表作为存储结构。

1.2存储密度的大小

1.链表的每个结点除了设置数据域用来存储数据元素外,还要额外设置指针域,用来存储元素之间逻辑关系的指针,从存储密度上来讲,这是不经济的。所谓存储密度是指数据元素本身所占用的存储量和整个结点结构所占用的存储量之比。
2.存储密度越大,存储空间的利用率就越高。显然,顺序表的存储密度为1,而链表的存小于1。如果每个元素数据域占据的空间较小,则指针的结构性开销就占用了整个结点的大部分空间,这样存储密度较小。例如,若单链表的结点数据均为整数,指针所占用的空间和整型量相同,则单链表的存储密度为0.5。因此,如果不考虑顺序表中的空闲区,则顺序表的存储空可100%,而单链表的存储空间利用率仅为50%。
3.基于此,当线性表的长度变化不大,易于事先确定其大小时,为了节约存储空间,宜采用顺序表作为存储结构。

2.时间性能的比较

2.1存储元素的效率

1.顺序表是由数组实现的,它是一种随机存取结构,指定任意一个位置序号 i ,都可以在 O(i)时间内直接存取该位置上的元素,即取值操作的效率高;而链表是一种顺序存取结构,按位置访问链表中第 i
个元素时,只能从表头开始依次向后遍历链表,直到找到第 i 个位置上的元素,为 O(n)即取值操作的效率低。
2.基于此,若线性表的主要操作是和元素位置紧密相关的这类取值操作,很少做插入或删除序表作为存储结构。

2.2插入和删除操作的效率

1.对于链表,在确定插人或删除的位置后,插入或删除操作无需移动数据,只需要修改指针,时间复杂度为 O (1)。而对于顺序表,进行插人或删除时,平均要移动表中近一半的结点,时间( n)。尤其是当每个结点的信息量较大时,移动结点的时间开销就相当可观。
2.基于此,对于频繁进行插人或删除操作的线性表,宜采用链表作为存储结构。

3.区别

在这里插入图片描述
需要注意的是我们这里比较的是带头结点的双向循环链表,而对于缓存利用率,我们则需要了解存储体系结构 以及 局部原理性,具体如下图:
在这里插入图片描述

对于我们数据结构而言,则是存在内存中的大家要记住!(仅需了解)

总结:到此我们对于顺序表和链表的学习便告一段落了,接下来我将会不定期的出LeetCode的题解来进行对知识的巩固!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/193254.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Day14【元宇宙的实践构想03】—— 元宇宙的资产观(NFT、数字资产、虚拟地产、与现实世界资产关系)

💃🏼 本人简介:男 👶🏼 年龄:18 ✍今日内容:《元宇宙的实践构想》03——元宇宙的资产观 ❗❗❗从1.31日开始,阿亮每天会查阅一些元宇宙方面的小知识,和大家一起分享。一是…

cobaltstrike的shellcode免杀

基础概念 shellcode是一段用于利用软件漏洞而执行的代码,也可以认为是一段填充数据,shellcode为16进制的机器码,因为经常让攻击者获得shell而得名。shellcode常常使用机器语言编写。 可在暂存器eip溢出后,塞入一段可让CPU执行的s…

vue入门到精通(七)

6、依赖注入 祖先组件向后代组件传值 6.1 provide() 提供一个值,可以被后代组件注入。 provide() 接受两个参数:第一个参数是要注入的 key,可以是一个字符串或者一个 symbol,第二个参数是要注入的值。 与注册生命周期钩子的 AP…

百趣代谢组学文献分享埃博拉病毒发病机制及组合生物标志物的发现

百趣代谢组学文献分享,今天我们分享的文献就是通过多组学技术研究埃博拉病毒发病机制及组合生物标志物的发现。该文献的研究思路也可以给我们开展新型冠状病毒肺炎相关研究提供借鉴。 代谢组学文献分享,2013-2016年西非埃博拉病毒病(EVD&…

(面经三,技术面)——时间:2022-11-11 地点:线上

面试经历(三)——时间:2022-11-11 地点:线上 1.什么是抽象类 有抽象方法的类,用来表征对问题领域进行分析、设计中得出的抽象概念。 2.抽象类和接口的区别 继承关系:类只能单继承。接口可以实现多个接口 构…

智慧物业管理系统的设计与实现

项目描述 临近学期结束,还是毕业设计,你还在做java程序网络编程,期末作业,老师的作业要求觉得大了吗?不知道毕业设计该怎么办?网页功能的数量是否太多?没有合适的类型或系统?等等。这里根据疫情当下,你想解决的问…

【大数据】第二章:搭建Hadoop集群(送尚硅谷大数据笔记)

尚硅谷Hadoop3.x官方文档大全免费下载 搭建集群没什么好讲的,跟着视频和笔记出不了什么问题。 唯一遇到的问题就是安装好VmWare后打不开,发现是老师给的VmWare版本不适配本机的WIN11。 解决办法就是下载最新版本的VmWare。新版已经修复了与WIN11的兼容性…

计算机网络基础(三)

前言: 在计算机网络基础(二)中,我们着重学习了应用层,传输层的知识。在 本文,就要介绍网络层,数据链路层,这两块内容细节也很多。这是计算机网络基础篇的最后一文,系统的学习后,就可…

基于php、Thinkphp5的共享电动车管理系统

摘 要当前共享单车在社会上广泛使用,但单车骑行的短距离仍旧不能完全满足广大用户的需求。共享电动车管理系统可以为用户提供账户信息、押金信息、充值信息、租车信息等功能,拥有较好的用户体验.能实时动态显示车辆位置提供更加快捷方便的租车方式,解决了常见共享电动车管理较为…

英雄互娱|提升 300% !一次性能优化实战记录

案例背景 英雄互娱是国内知名游戏研发商和发行商,经常遇到热门线上游戏,在某瞬间出现大量登录请求,需要临时扩容资源的场景。为了让服务更好的应对突增并发请求压力,客户尝试通过把应用服务容器化部署,能通过 HPA&…

Android 屏幕刷新机制 VSync+Choreographer

1.显示系统基础知识 一个典型的显示系统一般包括CPU、GPU、Display三部分,其中CPU负责计算帧数据,并把计算好的数据交给GPU,GPU会对图形数据进行渲染,渲染好后放到图像缓冲区buffet里存起来,然后Display(屏幕或显示器)负责把buffer里的数据呈现到屏幕上。如下图: 这里…

npm发布封装的公共组件

一.新建vue项目项目目录结构如下:二.修改项目文件夹1.创建一个packages文件夹(用于存放编写的组件)2.把src修改为examples3.新建一个vue.config.js文件,并修改由于修改了src文件夹,启动vue项目后,找不到入口(main.js)会报错,所以需要重新指定启动入口module.exports {// 将 ex…

大数据实时多维OLAP分析数据库Apache Druid入门分享-下

文章目录架构核心架构外部依赖核心内容roll-up预聚合列式存储Datasource和Segments位图索引数据摄取查询集群部署部署规划前置条件MySQL配置HDFS配置Zookeeper配置启动集群导入HDFS示例架构 核心架构 Druid servers建议将它们组织为三种服务器类型:Master主服务器、Query查询服…

word高效技巧:这几个表格操作让工作更快速

说到表格,都说Excel制表功能更强大。但是,表格在Word排版中的应用同样非常广泛。比如,在制作简历表、求职表和登记表等一些不规则且不需要做复杂统计分析、有大量文字的表格,我们都会用Word文档来制作。因此,熟练掌握W…

ERR_CONNECTION_REFUSED 解决方法

解决对部分网站请求ERR_CONNECTION_REFUSED问题问题描述可能一:在项目中设置了接口的代理可能二:接口a所在的服务器确实是拒绝了我的ip请求可能三:电脑设置了对其的代理为127.0.0.1由此,接口不再行不通了,问题得到进一…

VisualStudio—Remote Debug

主要用来解决本地调试没问题发布到远端后却报错的项目。一、Windows Debug Windows本文叙述采用的VS2022。①远端(windows服务器)安装远程调试器远端(windows服务器)安装过程省略,详见官方参考链接中设置远程调试器。②…

LightningChart .NET 10.3.2.3 2023-01-20 Crack

GPU 加速图表控件 LightningChart .NET 和 JavaScript 解决方案旨在通过彻底的图表优化、最小的延迟和流畅的呈现来满足行业最苛刻的数据可视化要求。 最佳渲染性能 LightningChart for .NET 具有超过 1,000,000,000,000(超过 1 万亿)个数据点的出色渲染…

2023牛客寒假算法基础集训营5(通过A,B,C,D,H,I,K,L) I题有详解

其他题待补中…… 链接:2023牛客寒假算法基础集训营5 简单题 A 小沙の好客(贪心,前缀和,二分) 题意思路 给定nnn个商品的价值,qqq次询问,每次询问k,xk, xk,x即价值不超过xxx的商品最多可以拿…

DolphinScheduler 3.1.0 海豚集群部署配置

文章目录DolphinScheduler 3.1.0 部署过程1. JDK1.8环境准备2. 下载安装包3. 上传安装包并解压4. Dolphinscheduler用户要sudo权限,免密配置创建海豚用户并且给予sudo权限免密配置:服务器各台节点之间要互相免密5. 修改配置文件6. 修改元数据配置文件7. …

设计模式第6式:命令模式

前言 命令模式关注这样一种场景:指令发布者无需关注指令是怎么执行的,只需要指定具体的执行者,具体的指令由执行者来完成。命令模式将指令发布动作和指令执行动作解耦。 我在刚开始学习命令模式的时候,比较困惑它的使用场景。它…