顺序表和链表的优缺点详解

顺序表和链表 顺序表和链表的简单介绍和实现 阅读详情

一、什么是线性表

线性表,全名为线性存储结构。使用线性表存储数据的方式可以这样理解,即把所有数据用一根线串起来,再存储到物理空间中。
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

将具有一对一关系的数据线性地存储到物理空间中,这种存储结构就称为线性存储结构(简称线性表)

二、顺序存储结构和链式存储结构

图 3 中我们可以看出,线性表存储数据可细分为以下 2 种:
如图 3a) 所示,将数据依次存储在连续的整块物理空间中,这种存储结构称为顺序存储结构(简称顺序表);
如图 3b) 所示,数据分散的存储在物理空间中,通过一根线保存着它们之间的逻辑关系,这种存储结构称为链式存储结构(简称链表);

也就是说,线性表存储结构可细分为顺序存储结构和链式存储结构。

三、什么是顺序表

顺序表,全名顺序存储结构,是线性表的一种。
不仅如此,顺序表对数据的物理存储结构也有要求。顺序表存储数据时,会提前申请一整块足够大小的物理空间,然后将数据依次存储起来,存储时做到数据元素之间不留一丝缝隙。

在这里插入图片描述

四、什么是单链表,链式存储结构

链表,别名链式存储结构或单链表,用于存储逻辑关系为 “一对一” 的数据。与顺序表不同,链表不限制数据的物理存储状态,换句话说,使用链表存储的数据元素,其物理存储位置是随机的。

在这里插入图片描述
像图 2 这样,数据元素随机存储,并通过指针表示数据之间逻辑关系的存储结构就是链式存储结构。

五、链表的节点

从图 2 可以看到,链表中每个数据的存储都由以下两部分组成:
数据元素本身,其所在的区域称为数据域;
指向直接后继元素的指针,所在的区域称为指针域;

即链表中存储各数据元素的结构如图 3 所示:
在这里插入图片描述
图 3 所示的结构在链表中称为节点。也就是说,链表实际存储的是一个一个的节点,真正的数据元素包含在这些节点中,如图 4 所示:
在这里插入图片描述

六、顺序表和链表的优缺点

顺序表和链表由于存储结构上的差异,导致它们具有不同的特点,适用于不同的场景。
通过系统地学习顺序表和链表我们知道,虽然它们同属于线性表,但数据的存储结构有本质的不同:
顺序表存储数据,需预先申请一整块足够大的存储空间,然后将数据按照次序逐一存储,数据之间紧密贴合,不留一丝空隙,如图 1a) 所示;
链表的存储方式与顺序表截然相反,什么时候存储数据,什么时候才申请存储空间,数据之间的逻辑关系依靠每个数据元素携带的指针维持,如图 1b) 所示;

在这里插入图片描述

开辟空间方式不同

顺序表存储数据实行的是 “一次开辟,永久使用”,即存储数据之前先开辟好足够的存储空间,空间一旦开辟后期无法改变大小(使用动态数组的情况除外)。
而链表则不同,链表存储数据时一次只开辟存储一个节点的物理空间,如果后期需要还可以再申请。
因此,若只从开辟空间方式的角度去考虑,当存储数据的个数无法提前确定,又或是物理空间使用紧张以致无法一次性申请到足够大小的空间时,使用链表更有助于问题的解决。

空间利用率不同

从空间利用率的角度上看,顺序表的空间利用率显然要比链表高。
这是因为,链表在存储数据时,每次只申请一个节点的空间,且空间的位置是随机的,如图 2 所示:

在这里插入图片描述
这种申请存储空间的方式会产生很多空间碎片,一定程序上造成了空间浪费。不仅如此,由于链表中每个数据元素都必须携带至少一个指针,因此,链表对所申请空间的利用率也没有顺序表高。

空间碎片,指的是某些容量很小(1KB 甚至更小)以致无法得到有效利用的物理空间。

时间复杂度不同

解决不同类型的问题,顺序表和链表对应的时间复杂度也不同。
根据顺序表和链表在存储结构上的差异,问题类型主要分为以下 2 类:
问题中主要涉及访问元素的操作,元素的插入、删除和移动操作极少;
问题中主要涉及元素的插入、删除和移动,访问元素的需求很少;
第 1 类问题适合使用顺序表。这是因为,顺序表中存储的元素可以使用数组下标直接访问,无需遍历整个表,因此使用顺序表访问元素的时间复杂度为 O(1);而在链表中访问数据元素,需要从表头依次遍历,直到找到指定节点,花费的时间复杂度为 O(n);
第 2 类问题则适合使用链表。链表中数据元素之间的逻辑关系靠的是节点之间的指针,当需要在链表中某处插入或删除节点时,只需改变相应节点的指针指向即可,无需大量移动元素,因此链表中插入、删除或移动数据所耗费的时间复杂度为 O(1);而顺序表中,插入、删除和移动数据可能会牵涉到大量元素的整体移动,因此时间复杂度至少为 O(n);
综上所述,不同类型的场景,选择合适的存储结构会使解决问题效率成倍数地提高。

Access查询中的Dlookup函数的妙用 在Microsoft Access中,处理和分析数据的过程中,常常会遇到需要根据条件从其他记录中提取特定数据的情况。这时候,Dlookup函数就成了开发者和数据分析师的得力助手。今天我们将通过一个具体的实例,详细探讨如何利用Dlookup函数来解决复杂的查询问题。 阅读详情

相关推荐

OpenPCDet安装及其3D检测算法实现

OpenPCDet及pointpillar复现

weixin_58207716的博客 1万+

基础顺序表,单链表

顺序表固定大小,不能随着数据的增多而增大、受到栈空间的限制,可以用realloc函数扩容。 优点:易于查询,索引快 1.顺序表的内存空间连续。 2.尾插、尾删效率较高,时间复杂度是O(1)。 3.支持随机访问,可以高效的按下标进行操作,时间复杂度是O(1)。 缺点:扩展性弱,不易删除、添加。 1.在顺序表中间插入或删除元素时都涉及到元素的移动,效率较低,时间复杂度为O(N)。 2.顺序表长度固定,有时需要扩容。 注:以下代码根据参考直接手打,可能有手误,基本没有大问题。 顺序表代码参考B站博主:图图讲

sst159的博客 827

用Matlab机器人工具箱搞定六轴机械臂建模:从DH参数到3D可视化(附完整代码)

本文详细介绍了如何使用Matlab机器人工具箱进行六轴机械臂建模,涵盖从DH参数转换到3D可视化的完整流程。通过正运动学验证、逆解计算和工作空间分析等实战案例,帮助开发者快速掌握机械臂建模技巧,并提供性能优化建议和完整代码示例。

weixin_28733637的博客 360

顺序表和链表的优缺点总结

顺序表和链表之间的对比。

lfm1010123的博客 1万+

文档多模态识别工具对比:MinerU、PaddleOCR、Marker

本文对比了三款文档多模态识别工具:MinerU、PaddleOCR和Marker。MinerU专注于中文文档的端到端解析,支持复杂元素提取和结构化输出,适合中文论文和教材解析。PaddleOCR是通用OCR工具包,支持多语言和全流程任务,适用于发票、车牌等图像OCR。Marker则注重多语言支持和轻量化部署,适合英文论文和技术文档的快速转换。三者在核心技术、中文优化、表格处理、输出格式、部署复杂度和适用语言等方面各有优劣。选型建议根据具体需求:MinerU适合高精度中文解析,PaddleOCR适合定制化OC

朴拙科技的博客 4744

Tinder养号防封攻略来了:最新Tinder养号流程和运营攻略

今天,我就来给大家分享一下Tinder养号的具体操作,以及针对Tinder账号被封的一些常见问题为大家做个答疑。

m0_67768117的博客 2万+

数据结构-线性表 复习笔记

空间碎片,指的是某些容量很小(1KB 甚至更小)以致无法得到有效利用的物理空间。

CH400S的博客 471

Ad hoc网络路由协议概述4——按需路由协议(2)AODV协议 (Ad-hoc on-demand distance vector algorithm protocol)

AODV协议的基本流程。

weixin_42982240的博客 7705

【数据结构】顺序表和链表的优缺点

顺序表和链表的优缺点

holle_world_ldx的博客 5330

昇腾CANN实战:如何用DVPP+AIPP实现32路视频流毫秒级预处理(附性能对比)

本文深入探讨了昇腾CANN架构中DVPP和AIPP模块在32路视频流毫秒级预处理中的硬件加速技术。通过异构计算架构的优化,实现了从传统CPU方案的40.7毫秒到CANN方案3.4毫秒的显著性能提升,特别适用于智能安防领域的实时视频分析需求。文章详细解析了DVPP多通道并行设计和AIPP模型级预处理融合的技术细节,并提供了性能对比数据与实战调优经验。

alice7model的博客 919

Flutter框架GetX从入门到精通第二篇:路由管理-告别繁琐的Navigator

Flutter框架GetX从入门到精通第二篇:告别繁琐的Navigator。本系列将带你从零开始,一步步掌握 GetX 框架的核心功能与实战技巧。

鹏多多的博客 170

顺序表和链表的优缺点

顺序表 定义:在内存中用地址连续的一块存储空间顺序存放线性表的各元素。在程序设计语言中,一维数组在内存中占用的存储空间是一维连续的存储空间,因此我们用一维数组存储数据来表示顺序表。 优点: 由于顺序表是用数组来存储数据,内存空间连续,当访问数据时可以达到使用数组下标的方式随机访问。 CPU高速缓存的命中率高。 解释: 数据保存在内存中,数据是在CPU里进行运算的(逻辑和算术)。但是CPU速度太快,内存的速度跟不上CPU的速度。于是在CPU和内存之间存在一些寄存器和缓存器,用来保存数据。当CPU要使用数

weixin_57023347的博客 4047

PR工具timing report中setup time的计算过程

然后去pr工具里报告report_delay_calculation/reportDelayCalculation -from related_pin -to constraint_pin。这里constraint pin就是D pin (D0 D1 D2 D3),related pin就是 CK pin。我正在「拾陆楼」和朋友们讨论有趣的话题,你⼀起来吧?

m0_61544122的博客 455

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

顺序表和链表由于存储结构上的差异,导致它们具有不同的特点,适用于不同的场景。本节就来分析它们的特点,让读者明白 "在什么样的场景中使用哪种存储结构" 更能有效解决问题。 通过系统地学习顺序表和链表我们知道,虽然它们同属于线性表,但数据的存储结构有本质的不同: 顺序表存储数据,需预先申请一整块足够大的存储空间,然后将数据按照次序逐一存储,数据之间紧密贴合,不留一丝空隙,如图 1a) 所示; 链表...

weixin_42437172的博客 1万+

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

数据结构与算法——顺序表和链表的优缺点(区别、特点)详解

顺序表和链表是常见的两种数据结构,用于组织和存储数据。它们在实际应用中各有优缺点,下面详细讲解一下它们的区别、特点以及各自的优缺点。

Itmastergo的博客 7983

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

顺序表和链表核心差异与优缺点详解

核心差异:顺序表靠连续内存 + 下标访问,链表靠分散节点 + 指针连接,核心区别是是否支持随机访问。效率取舍:顺序表赢在查询效率,链表赢在增删效率(找到位置后)。场景选择:查询多选顺序表,增删多选链表,本质是根据业务操作的频率选择更高效的存储方式。

2301_82008805的博客 320

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

【数据结构】详解双向链表

本文系统介绍了链表的相关知识,重点分析了双向链表的结构特点与实现方法。首先将链表分为8种类型,详细阐述了带头双向循环链表(双向链表)的结构特征,包括头节点设置、前后指针和循环特性。其次提供了双向链表的创建与功能实现代码。文章还比较了顺序表和双向链表的优缺点,并通过三个典型算法练习(判断环、寻找入环节点、复制随机链表)深入讲解了链表操作技巧,其中重点解析了快慢指针法在环形链表检测中的应用原理与实现方式。

w37773698的博客 145

顺序表和链表超详细大总结

顺序表和链表大总结

qq_66314292的博客 3258

单链表的增删查改

文章目录一.顺序表的优缺点二.链表1.链表的概念和结构2.链表的实现 一.顺序表的优缺点 上一篇博客讲解了顺序表,我们来回顾一下顺序表的优缺点 缺点: (1). 中间/头部的插入删除,时间复杂度为O(N) (2). 增容需要申请新空间,拷贝数据,释放旧空间。会有不小的消耗。 (3). 增容一般是呈2倍的增长,势必会有一定的空间浪费。例如当前容量为100,满了以后增容到200,我们再继续插入了5个数据,后面没有数据插入了,那么就浪费了95个数据空间。 优点: (1). 可用下标进行随机访问 (2).缓存命中率

DR5200的博客 3187

数据结构中的存储方式 顺序表 && 链表

顺序表和链表, 学好数据结构的关键

Matn_PID_world的博客 469

链表总结篇

链表总结

qq_62905657的博客 308

数据结构学习_04_线性表中的顺序表和链表的区别及优缺点

什么是顺序表? 顺序表是在计算机内存中以数组的形式保存的线性表。顺序表存储是将数据元素放到一块连续的内存存储空间,相邻数据元素的存放地址也相邻,逻辑与物理的统一。 什么是链表? 链表是一种物理存储单元上非连续、非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的。链表由一系列结点(链表中每个元素称为结点)组成,结点可以在运行时动态生成。 结点:每个结点包含两个部分:一个是存储数据元素的数据域,另一个是下一个结点地址的指针域。 优缺点比较: 1、时间上 1)访问随机元素的时间复杂度 因为顺序表

CZHLNN的博客 907

【数据结构】顺序表、单链表的 比较+总结

(优缺点文字部分转自: http://blog.youkuaiyun.com/zhang_minli/article/details/50489996)顺序表和链表de优缺点顺序表的优点方法简单,各种高级语言中都有数组,容易实现。 不用为表示结点间的逻辑关系而增加额外的存储开销(链表要增加额外的指针域)。 顺序表具有按元素序号随机访问的特点。缺点 在顺序表中做插入删除操作时,平均移动大约表中一般的元素,因

It’s All Uphill From Here 2110

数据结构中顺序表 和 链表的不同/优势/劣势(文字解释 和 图文解释)

从4个方面比较:所占空间,运行时间,具体相关操作(增 删 查 改),和适用情况其中,运行时间的比较放在了 具体相关操作 里面去解读补充:存储密度 = 结点数据本身占用的空间 / 结点占用的空间总量存储密度越大,存储空间的利用率越高顺序表(1)优点:内存空间仅需要存放数据,存储密度大(为1),每个结点所占空间小(2)缺点:顺序存储需要数组来完成,申请的为静态内存空间,预先分配,空间固定,空间可能出现不够用或者浪费的情况链表(1)优点:结点空间可以动态申请和释放,灵活多变,整体空间利用率高,不会出现浪费

Yskm_sir的博客 1739

【数据结构】顺序表和链表详解

1. 线性表 线性表(linear list)是n个具有相同特性的数据元素的有限序列。 线性表是一种在实际中广泛使用的数据结构,常见的线性表:顺序表、链表、栈、队列、字符串... 线性表在逻辑上是线性结构,也就说是连续的一条直线。但是在物理结构上并不一定是连续的,线性表在物理上存储时,通常以数组和链式结构的形式存储。 2. 顺序表 2.1 概念及结构 顺序表是用一段物理地址连续的存储单元依次存储数据元素的线性结构,一般情况下采用数组存储。在数组上完成数据的增删查改。顺序表的物理结构和逻辑结构是

m0_62934529的博客 3761
上一篇: python 用两个栈实现一个队列
下一篇: python 用队列实现栈
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

打赏作者

一叶知秋的BLOG

创作不易 请多多关注

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

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

打赏作者

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

抵扣说明:

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

余额充值