首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >数据结构:线性表走起!(顺序存储结构)

数据结构:线性表走起!(顺序存储结构)

作者头像
小Bob来啦
发布于 2020-12-08 07:00:06
发布于 2020-12-08 07:00:06
50300
代码可运行
举报
运行总次数:0
代码可运行

每天与你不见不散!

每日一句,送给最珍贵的你:

愿你慢慢长大,愿你有好运,如果没有,希望你在不幸中学会慈悲;愿你被很多人爱,如果没有,希望你在寂寞中学会宽容。——刘瑜《愿你慢慢长大》

上次我们学到了线性表的定义以及相关抽象数据类型。

在最开始我们说数据结构时,聊到了关于物理结构,也提到了物理结构包括顺序存储结构和链式存储结构,这里就先介绍关于线性表的顺序结构啦。

关于顺序结构:数据结构笔记:第一章(数据结构绪论)

每日推荐:

顺序结构定义

线性表的顺序存储结构,指的是用一段地址连续的存储单元依次存储线性表的数据元素。

线性表(a1,a2,...an)的顺序存储结构示意图如下:

顺序存储结构方式

线性表的顺序存储就如我们在教师上课占座位一样,用身上能拿出来的物品为室友占个好位置,然后等室友来后按占好的位置坐下。

那么顺序存储结构也就类似于占座位,只是在计算机中是把内存空间给占了,然后把相同数据类型给放进去的操作,到这里不知大家有没有发现和以前学过的一维数组很像,即我们也可以通过数组来实现顺序存储结构。只需把第一个数据元素存到数组下标为0的地方,接着把线性表相邻的数据元素存储在数组中相邻的地方。

当然线性表也和数组也是有限制的,比如线性表的当前的长度不能超过存储容量,即数组的长度。

如下面线性表的顺序存储结构代码

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#define Maxsize 20
typedef int ElemType;
typedef struct{
  ElemType data[Maxsize];    //数组存储数据元素,最大值为Maxsize
  int length;                //线性表当前长度
  }SqList;

如上代码所示,我们即可发现在顺序存储结构会有三个属性:

  1. 存储空间的起始位置:数组data,它的位置就是存储空间的存储位置。
  2. 线性表的最大存储容量:数组长度Maxsize。
  3. 线性表的当前长度:length。

既然有数组长度,那么为什么还会有线性表的长度呢???

数组的长度是存放线性表的存储空间的长度,存储分配后这个量一般是不变的。有点小伙伴可能会说用动态数组,但实际上这会带来性能上的损耗。

而线性表的长度是线性表中数据元素的个数,随着线性表在插入和删除操作的进行,这个量是可以变化的。

且线性表的长度是要小于等于数组的最长长度的。

地址计算

在线性表中我们也看见它的起始为1,而数组的起始下标为0,这是我们需要注意的地方。所以当我们用数组存储顺序时就意味着要分配固定长度的数组空间,由于在线性表中我们要进行插入及其其它操作,所以分配的数组空间要大于等于当前线性表的长度。

存储器中的每个单元都有自己的编号,这个编号叫地址。

假设每个数据元素占用的是c个内存单元,那么第i+1个数据元素的存储单元和第i个数据元素的存储单元的位置满足如下关系:LOC(Ai+1)=LOC(Ai)+c,因此可以推出第i个数据元素的存储单元和第一个元素存储单元的位置关系:LOC(Ai)=LOC(A1)+(i-1)*c。

存取的时间复杂度分析

由上面这个公式可以轻易地推算出每个数据元素的位置地址,那么我们对于线性表中每个位置的数据元素的进行读入和取出操作的时间对于计算机而言来说都是相同的,是一个常数,用算法的时间复杂度概念来说,它的存取时间性能为O(1),通常把具有这种特点的存储结构称为随机存取结构。

顺序存储结构的插入与删除

插入操作之前我们首先要获得元素,代码如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
typedef int status;  //status是函数的类型(整型)
status GetElem (SqList L,int i,ElemType *e){
//初始条件:顺序线性表L已存在,1<=i<=ListLength(L)
//结果:用e返回L中第i个数据元素的值。
  if(L.length==0 || i<1 || i>L.length)
    return 0;
  *e=L.data[i-1];
  return 1;
}

插入操作思路:

  • 如果插入的位置不合理,即抛出异常;
  • 如果线性表长度大于等于数组长度,则抛出异常或动态增加容量;
  • 从最后一个元素开始向前遍历,直到遇到i,然后分别将它们都向后移动一个位置;
  • 将要插入元素填入位置i处,然后表长加1。

实现代码如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
//初始条件:顺序线性表L已存在,1<=i<=ListLength(L)
//结果:在L中第i个位置之前插入新的数据元素e,然后表长加1,
status ListInsert (SqList *L,int i,ElemType e){
int k;
if(L->length==Maxsize)    //线性表已满
  return 0;
if(i<1 || i>L->length+1)    //当i不在范围时
  return 0;
if(i<=L->length){    //若插入数据元素位置不在表位
  for(k=L->length-1;k>=i-1;k--)    //将要插入位置后数据元素向后移动一位
    L->data[k+1]=L->data[k];
}
L->data[i-1]=e;    //将新元素插入
L->length++;
return 1;
}

删除操作思路:

  • 如果删除位置不合理,抛出异常;
  • 取出删除元素;
  • 从删除元素位置开始遍历到最后一个元素,分别将它们向前移动一个元素;
  • 表长减1。

实现代码实例如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
//初始条件:顺序线性表L已存在,1<=i<=ListLength(L)
//结果:删除L中的第i个数据元素,并用e返回其值,L的长度减1.
Status ListDelete (SqList *L,int i,ElemType *e){
int k;
if(L->length==0)    //线性表为0
  return 0;
if(i<1 || i>L->length)
  return 0;
*e=L->data[i-1];
if(i<L->length){
  for(k=i;k<L->length;k++)
  L->data[k-1]=L->data[K];
}
L->length--;
return 1;
}

插入和删除的时间复杂度分析

最好的情况就是在表尾插入或删除一个数据元素,这时不需要移动其他数据元素,时间复杂度为O(n)。最坏的情况是在第一个位置插入或删除一个数据元素,时间复杂度为O(n)。

从所有的元素来看,位置越靠前,移动次数越多,位置越靠后,移动次数越少,平均移动次数和中间的数据元素移动的次数是相同的,为(n-1)/2。所以插入和删除的平均时间复杂度为O(n)。

线性表顺序存储结构的优缺点

优点: 1. 不需要为表中元素之间的逻辑关系增加额外的存储存储空间; 2. 可以快速地存取表中任意位置的数据元素(存取时间复杂度为O(1)); 缺点: 1. 插入和删除需要移动大量的数据元素(插入删除时间复杂度为O(n)); 2. 难以确定存储空间的容量;

未完待续...

最后的话:线性表的一些语句平时还是得多练练,不然很容易忘记啦!

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-09-23,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 程序员Bob 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
中央网信办颁布《网络产品和服务安全审查办法(试行)》
5月2日,中央网信办颁布《网络产品和服务安全审查办法(试行)》。办法中明确,关系国家安全的网络和信息系统采购的重要网络产品和服务,应当经过网络安全审查,重点审查其安全性、可控性,旨在提高网络产品和服务安全可控水平,防范网络安全风险,维护国家安全。该办法于今年6月1日起实施。 以下附《网络产品和服务安全审查办法(试行)》全文: (转自中央网信办官网) 网络产品和服务安全审查办法 (试 行) 第一条 为提高网络产品和服务安全可控水平,防范网络安全风险,维护国家安全,依据《中华人民共和国国家安全法》《中华人民
安恒信息
2018/04/11
1.6K0
滴滴出行、运满满、货车帮、BOSS直聘接受网络安全审查
最新消息 据“网信中国”微信公众号5日发布的公告,为防范国家数据安全风险,维护国家安全,保障公共利益,依据《中华人民共和国国家安全法》《中华人民共和国网络安全法》,网络安全审查办公室按照《网络安全审查办法》,对“运满满”“货车帮”“BOSS直聘”实施网络安全审查。为配合网络安全审查工作,防范风险扩大,审查期间“运满满”“货车帮”“BOSS直聘”停止新用户注册。 安全审查鸣笛,“滴滴”不会是最后一家 7月2日,网络安全审查办公室发布对“滴滴出行”启动网络安全审查的公告。原文如下: 为防范国家数据安全风险,维护
FB客服
2023/03/30
4430
滴滴出行、运满满、货车帮、BOSS直聘接受网络安全审查
网络安全宣传周 - 关键信息基础设施保护条例
随着信息技术的飞速发展,关键信息基础设施已成为国家经济社会运行的神经中枢,其安全稳定运行对于国家的安全、经济发展和社会稳定至关重要。为了保障关键信息基础设施的安全,我国制定了《关键信息基础设施安全保护条例》(以下简称《条例》)。在网络安全宣传周期间,深入研究《条例》对于提高全社会对关键信息基础设施保护的认识、加强关键信息基础设施的安全防护具有重要意义。
Khan安全团队
2024/12/01
1640
《网络安全审查办法》与信安从业者有什么关系
近日《网络安全审查办法》刷遍安全圈,为何如此被各大厂商争相转载。那么《办法》与我们信安从业者又有何相关?
FB客服
2020/05/06
5310
《网络安全审查办法》与信安从业者有什么关系
安全专家解读:《网络安全审查办法》出台,企业应如何落实加强安全建设?
关键信息基础设施对国家安全、经济安全、社会稳定、公众健康和安全至关重要。我国建立网络安全审查制度,目的是通过网络安全审查这一举措,及早发现并避免采购产品和服务给关键信息基础设施运行带来风险和危害,保障关键信息基础设施供应链安全,维护国家安全。
腾讯安全
2020/04/30
8070
安全专家解读:《网络安全审查办法》出台,企业应如何落实加强安全建设?
网络安全宣传周 - 供应链安全
在当今数字化时代,网络安全已成为国家、社会、企业乃至个人绕不开的重要命题。而供应链安全作为网络安全的关键防线,其重要性不言而喻。现代企业的供应链通常涉及多个环节和多个合作伙伴,一旦供应链出现安全漏洞,可能会对企业的核心利益造成严重影响。例如,软件供应链安全事件频发,攻击者利用软件供应链的复杂性和互联性,通过恶意软件植入、代码篡改等方式,实现对目标软件的深度渗透和控制,进而影响企业的竞争力和市场地位。同时,供应链安全也关乎消费者权益。消费者对产品和服务的质量和安全性要求越来越高,一旦供应链网络出现问题,可能导致产品质量问题或数据泄露,损害消费者利益,甚至引发消费者维权事件,对企业形象造成严重影响。此外,关键信息基础设施的稳定运行也离不开供应链安全。党的十八大以来,以习近平同志为核心的党中央高度重视网络安全和信息化工作,关键信息基础设施作为国家的重要资产,其安全稳定运行至关重要。而供应链安全问题可能会导致关键信息基础设施的停服断供、安全漏洞等,严重危害国家安全。
Khan安全团队
2024/11/02
3830
《网络安全审查办法》落地实施,风控为何成网络安全最重要防线?
当前,人类社会已进入到了除海陆空、太空之外的第三个空间——虚拟网络空间,而网络空间安全不仅与大数据,人工智能等热门领域联系紧密,还运用到各行各业,渗入我们生活的每一个角落。
科技云报道
2022/04/16
3880
《网络安全审查办法》落地实施,风控为何成网络安全最重要防线?
中国对美光在华销售的产品实施网络安全审查
3月31日晚间,国家互联网信息办公室下设的“网络安全审查办公室”宣布对美光公司(Micron)在华销售的产品实施网络安全审查。
芯智讯
2023/04/11
2630
中国对美光在华销售的产品实施网络安全审查
国家网信办:掌握超过100万用户个人信息运营者赴国外上市需审查
1.登录中华人民共和国司法部 中国政府法制信息网(www.moj.gov.cn、www.chinalaw.gov.cn),进入首页主菜单的“立法意见征集”栏目提出意见。
CloudBest
2023/03/03
7430
5个问题快速读懂今起实施的《网络安全法》
我们所知的《中华人民共和国网络安全法》是去年11月7日通过,并从今年6月1日也就是今天开始施行的。就该法律的获准通过及其解读,FreeBuf还曾专访过段和段律师事务所创始人刘春泉律师,主要就其对企业安全可能产生的影响做了相对深入的解读。 路透社先前发表的评论文章中援引了美国商会主席James Zimmerman的话,他认为中国的这项法律“模糊,暧昧,监管机构完全可以对其进行各种解读”;不过我们知道,《网络安全法》是中国第一部有关网络安全的基础性、“大纲性”的法律,刘春泉律师就曾说过它“仍需完善”,但至少中国
FB客服
2018/02/26
7900
5个问题快速读懂今起实施的《网络安全法》
《网络安全法》今起实施,专家帮您来解读
今天,备受瞩目的《中华人民共和国网络安全法》(以下简称《网络安全法》)正式付诸实施了。这是我国第一部专门针对网络安全综合性法律,它的施行标志着我国网络安全从此有法可依,网络空间治理、网络信息传播秩序规范、网络犯罪惩治等方面即将迎来崭新的局面。特别是在网络信息技术日益发展的当下,《网络安全法》的实施对保障我国网络安全、维护国家总体安全具有深远而重大的意义。 不久前,“2017西湖论剑(中国网络安全创新分享大会)”在乌镇成功召开,政府主管部门领导、业界专家、企业决策者和技术负责人,从各自领域内出发,分享了对《网
安恒信息
2018/04/11
7620
《网络安全法》今起实施,专家帮您来解读
国务院最新发布《关键信息基础设施安全保护条例》,9月1日起施行
《关键信息基础设施安全保护条例》已经2021年4月27日国务院第133次常务会议通过,现予公布,自2021年9月1日起施行。
腾讯安全
2021/08/17
1.1K0
国务院最新发布《关键信息基础设施安全保护条例》,9月1日起施行
网络安全法,你应该关注的互联网大事件
互联网高速发展,配套的法律法规等监管制度完善速度慢跟不上,是事实,在电子商务、个人隐私、数据安全、版权保护、知识产权诸多领域都有一些灰色地带,让互联网上一直存在各种地雷。 可喜可贺的是,《中华人民共和国网络安全法(草案)》在上个月,通过了第十二届全国人大常委会第十五次会议的初次审议。近日,全国人大官网公布网络安全法(草案)全文并征求民意。 这是一个非常重要的里程碑事件,对人们的网络生活、对互联网相关企业的业务运营,都将产生巨大、深远的影响。草案尚在征集意见阶段,不过基本框架已面面俱到了,里面还是有不少值得关
罗超频道
2018/04/28
7040
网络安全宣传周 - 数据安全法
随着信息技术的飞速发展,数据已成为国家基础性战略资源,对于推动经济发展、提升国家治理能力、保障国家安全具有重要意义。为了规范数据处理活动,保障数据安全,促进数据开发利用,我国制定了《中华人民共和国数据安全法》(以下简称《数据安全法》)。在网络安全宣传周期间,深入研究《数据安全法》对于提高全社会的数据安全意识、加强数据安全保护具有重要的现实意义。
Khan安全团队
2024/12/01
1770
可落地的安全要求,关基保护又出新规 | FreeBuf咨询解读
2022年10月12日,市场监管总局(标准委)正式批准国家标准——GB/T 39204 2022《信息安全技术 关键信息基础设施安全保护要求》,该要求将于2023年5月1日起实施。
FB客服
2023/02/10
5940
可落地的安全要求,关基保护又出新规 | FreeBuf咨询解读
网络安全宣传周 - 等级保护 2.0
在当今数字化时代,网络安全已成为国家、企业和个人面临的重要挑战。为了有效保障网络安全,我国推出了网络安全等级保护 2.0 制度(以下简称 “等级保护 2.0”)。在网络安全宣传周期间,深入研究等级保护 2.0 对于提高全社会的网络安全意识、加强网络安全防护具有重要意义。
Khan安全团队
2024/12/01
1940
网信办修改《网络安全法》的决定(征求意见稿)公布
2022年9月14日,国家互联网信息办公室发布关于公开征求《关于修改〈中华人民共和国网络安全法〉的决定(征求意见稿)》意见的通知。 为了做好《中华人民共和国网络安全法》与相关法律的衔接协调,完善法律责任制度,保护个人、组织在网络空间的合法权益,维护国家安全和公共利益,我办会同相关部门起草了《关于修改〈中华人民共和国网络安全法〉的决定(征求意见稿)》,现向社会公开征求意见。公众可通过以下途径和方式反馈意见: 1、通过电子邮件将意见发送至:law@cac.gov.cn。 2、通过信函将意见寄至:北京市西城区车公
云头条
2022/09/15
1.2K0
网络安全行业点亮“航标灯”——《关键信息基础设施安全保护条例》解读
能源、交通、水利、金融、公共服务等重要行业和领域作为经济社会运行的神经中枢,长期面临着各类安全威胁。近年来,世界各国纷纷出台网络安全战略并不断完善网络安全立法,加强关键信息基础设施保护。
腾讯安全
2021/08/30
5130
聊聊供应链安全:政策与问题
12月14日,据路透社和《华盛顿邮报》报道,知名IT公司SolarWinds旗下的Orion网络监控软件更新服务器遭黑客入侵并植入恶意代码,导致美国财政部、商务部等多个政府机构用户受到长期入侵和监视,甚至可能与上周曝出的FireEye网络武器库被盗事件有关。美国国家安全委员会甚至因此在上周六召开紧急会议。 SolarWinds是全球流行的网络管理软件,客户群体覆盖了大量重要机构和超过9成的世界500强企业,在全球的机构用户超过30万家。根据该公司网站的介绍,其中包括美国军方的五大军种(海军、陆军、空军、美国
FB客服
2023/04/26
5550
聊聊供应链安全:政策与问题
《中华人民共和国网络安全法》分类目录文章标签友情链接联系我们
第一章 总 则 第二章 网络安全支持与促进 第三章 网络运行安全 第一节 一般规定 第二节 关键信息基础设施的运行安全 第四章 网络信息安全 第五章 监测预警与应急处置 第六章 法律责任 第七章 附 则 条文 第一章 总 则 第一条 为了保障网络安全,维护网络空间主权和国家安全、社会公共利益,保护公民、法人和其他组织的合法权益,促进经济社会信息化健康发展,制定本法。 第二条 在中华人民共和国境内建设、运营、维护和使用网络,以及网络安全的监督管理,适用本法。 第三条 国家坚持网络安
用户1246209
2018/06/27
1.1K0
推荐阅读
相关推荐
中央网信办颁布《网络产品和服务安全审查办法(试行)》
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验