数组属于线性表吗,为什么

数组属于线性表,原因:线性表就是数据排成像一条线一样的结构,数组用一组连续的内存空间来存储一组具有相同类型的数据,它是一种线性表的实现,它是由固定大小的相同类型元素(数据元素)构成的有限序列,通过下标来访问元素。

一、数组属于线性表吗

数组属于线性表。

原因:线性表就是数据排成像一条线一样的结构,数组用一组连续的内存空间来存储一组具有相同类型的数据,它是一种线性表的实现,它是由固定大小的相同类型元素(数据元素)构成的有限序列,通过下标来访问元素。数组中的元素在内存中是连续存储的,因此可以通过下标来访问数组中的任意元素,这也是数组的特点之一。

二、数组array

数组(Array)是有序的元素序列。若将有限个类型相同的变量的集合命名,那么这个名称为数组名。组成数组的各个变量称为数组的分量,也称为数组的元素,有时也称为下标变量。用于区分数组的各个元素的数字编号称为下标。数组是在程序设计中,为了处理方便, 把具有相同类型的若干元素按有序的形式组织起来的一种形式。这些有序排列的同类数据元素的集合称为数组。

数组的常用操作:

1、数组的创建


var arrayObj = new Array(); //创建一个数组
var arrayObj = new Array([size]); //创建一个数组并指定长度,注意不是上限,是长度
var arrayObj = new Array([element0[, element1[, ...[, elementN]]]]); //创建一个数组并赋值

2、数组元素的访问


var testGetArrValue=arrayObj[1]; //获取数组的元素值
arrayObj[1]= "这是新值"; //给数组元素赋予新的值

3、数组元素的添加


arrayObj. push([item1 [item2 [. . . [itemN ]]]]);// 将一个或多个新元素添加到数组结尾,并返回数组新长度
arrayObj.unshift([item1 [item2 [. . . [itemN ]]]]);// 将一个或多个新元素添加到数组开始,数组中的元素自动后移,返回数组新长度
arrayObj.splice(insertPos,0,[item1[, item2[, . . . [,itemN]]]]);//将一个或多个新元素插入到数组的指定位置,插入位置的元素自动后移,返回""。

4、数组元素的删除


arrayObj.pop(); //移除最后一个元素并返回该元素值
arrayObj.shift(); //移除最前一个元素并返回该元素值,数组中元素自动前移
arrayObj.splice(deletePos,deleteCount); //删除从指定位置deletePos开始的指定数量deleteCount的元素,数组形式返回所移除的元素

5、数组的截取和合并


arrayObj.slice(start, [end]); //以数组的形式返回数组的一部分,注意不包括 end 对应的元素,如果省略 end 将复制 start 之后的所有元素
arrayObj.concat([item1[, item2[, . . . [,itemN]]]]); //将多个数组(也可以是字符串,或者是数组和字符串的混合)连接为一个数组,返回连接好的新的数组

6、数组的拷贝


arrayObj.slice(0); //返回数组的拷贝数组,注意是一个新的数组,不是指向
arrayObj.concat(); //返回数组的拷贝数组,注意是一个新的数组,不是指向

7、数组元素的排序


arrayObj.reverse(); //反转元素(最前的排到最后、最后的排到最前),返回数组地址
arrayObj.sort(); //对数组元素排序,返回数组地址

三、线性表

线性表是最基本、最简单、也是最常用的一种数据结构。线性表(linear list)是数据结构的一种,一个线性表是n个具有相同特性的数据元素的有限序列。线性表中数据元素之间的关系是一对一的关系,即除了第一个和最后一个数据元素之外,其它数据元素都是首尾相接的(注意,这句话只适用大部分线性表,而不是全部。比如,循环链表逻辑层次上也是一种线性表(存储层次上属于链式存储,但是把最后一个数据元素的尾指针指向了首位结点)。

线性表的基本运算(假设L为一张线性表)

  1. 建立一个空表:Createlist(L)
  2. 置空表:ClearList(L)
  3. 判断表是否为空:IsEmpty(L)
    • 若为空返回True(1),否则返回False(0)
  4. 求表长:Length(L)
  5. 取表中的某个元素:GetList(L,i),即L[i],要求 0<=i<legth(L)-1
  6. 定位运算:Locate(L,x) 确定元素x在表L的位置
    • 如果存在返回位置信息,如果不存在返回-1
  7. 插入:Insert(L,x,i),将元素x插入到L表的第i个元素之前,且表长+1
  8. 添加:Add(L,x),将元素x加入到L表中,且长+1
  9. 删除:Delete(L,i),删除表L的第i个元素,且表长-1,要求 0<=i<legth(L)-1
  10. 复合元素
    • 合并:Merge(L1,L2),将表L1和表L2合并为一张表,去重
    • 去重:Deduplication(L),将表L的元素去重

线性表的顺序存储:

线性表的顺序存储是指在内存中用一块地址连续的存储空间顺序存放线性表的各数据元素,使得线性表中在逻辑结构上相邻的数据元素存储在连续的物理存储单元中,即通过数据元素物理存储的连续性来反映数据元素之间逻辑上的相邻关系。

typedef int ElementType;
typedef struct
{
	ElementType *array;   // 存放元素的数组
	int length;  // 当前长度
	int capacity;  // 数组容量
}SqList;

线性表的链式存储:

链式存储是指指在线性表中逻辑上相邻的数据元素在物理位置上并不一定相邻,它是通过‘链’建立起数据元素之间的逻辑关系。

typedef int ElementType;
typedef struct Node
{
	ElementType data;    // 数据域
	struct Node *next;   // 指针域
}node;
typedef struct Node *LinkList;

延伸阅读

数组的特征

  • 数组用唯一的名字标识,通过数组名可以数组中的元素进行引用。
  • 数组中的元素类型必须相同。
  • 数组的内存单元是连续的。
  • 数组中的数据元素都是顺序存放的。有先后关系,且元素之间没有空隙

文章标题:数组属于线性表吗,为什么,发布者:Z, ZLW,转载请注明出处:https://worktile.com/kb/p/49397

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
Z, ZLWZ, ZLW站长
上一篇 2023年4月15日 下午6:53
下一篇 2023年4月15日

相关推荐

  • 为什么很少有人用 Smalltalk

    这是因为:1、缺乏标准;2、商业模型失败;3、性能差;4、与外界的交互差。Smalltalk的类并没有公认的语法,而是通过反射方法调用来定义。不同供应商的反射API差异导致了程序定义本身就不可移植,不论程序使用的其他API如何。 1、缺乏标准 Smallktalk有(到现在依然有)多种实现,其实现的…

    2023年2月22日
    13500
  • 如何加快项目建设进度

    加快项目建设进度的方法:1、定义项目范围;2、组建合适的团队;3、制定项目时间表;4、管理项目风险;5、管理变更单;6、监控项目进度;7、有效沟通;8、庆祝成功和里程碑。定义项目范围包括为项目创建详细的时间表和预算。 1、定义项目范围 任何项目的名列前茅步都是确定工作范围。这包括为项目创建详细的时间…

    2023年2月23日
    29200
  • 目标管理怎么做

    做好目标管理的技巧:1、确定项目目标;2、设定切合实际的最后期限;3、制定行动计划以实现您的项目目标;4、适当休息;5、跟踪进度。确定项目目标是目标管理的名列前茅步。 1、确定项目目标 在目标管理方面,名列前茅步是确定您的项目目标是什么。这似乎不费吹灰之力,但重要的是要花时间真正考虑你想通过你的项目…

    2023年2月24日
    6300
  • 项目进度管理工具有什么

    项目进度管理工具有:一、Worktile;二、PingCode;三、进度猫;四、Podio;五、Asana;六、ActiveCollab。Worktile 是国内的一款老牌通用项目进度管理系统,Worktile 具备单项目、项目集、甘特图、项目集甘特图等,能随时查看目前整个公司都有哪些项目,当前进度…

    2023年4月29日
    10100
  • 天云数据CEO雷涛:迎接数智时代的正确姿势,是打造正确理解数智的认知体系

    雷涛  天云数据CEO 荣获国家级AI较高奖项:吴文俊人工智能科学技术发明奖。 2020年中关村高端领军人才获得者;首批CCF中国计算机学会大数据专委会委员;主导并参与汇丰银行、中国移动、中国联通、工商银行总部等多个亿级大型信息化项目规划建设。 文 |babayage 编辑 | 笑 笑 两年多求索,…

    2022年3月20日
    28900
  • 运营管理的主要内容有哪些

    运营管理的主要内容有:1、计划管理;2、组织管理;3、物资管理;4、质量管理;5、成本管理;6、财务管理;7、劳动人事管理;8、营销管理;9、团队管理。计划管理是指,通过预测、规划、预算、决策等手段,把企业经济活动围绕总目标的要求组织起来。

    2023年1月9日
    2.0K00
  • 数据库在软件开发中的作用是什么

    数据库在软件开发中的作用是:1、数据存储和管理;2、数据一致性和完整性;3、数据安全性;4、数据分析。数据库是软件开发中的重要组成部分,提供了统一的方式来存储和管理大量的数据。软件应用程序可以使用数据库来存储用户信息、产品详情、订单信息等。 一、数据存储和管理 数据库是软件开发中的重要组成部分,提供…

    2023年7月31日
    25300
  • 好用的软件研发进度管理软件有哪些

    分享10款优异软件研发进度管理工具,比如:1.软件研发项目进度管理工具-PingCode;2.通用项目进度管理平台-Worktile;3.大型复杂项目进度管理工具-Microsoft Project;4.开源项目进度管理系统-OpenProj;5.IT 项目缺陷追踪工具-Jira;6.开源免费项目管…

    2023年3月13日
    29000
  • 管理软件的软件哪个好

    管理软件的软件有:一、PingCode;二、Worktile;三、Wrike;四、Smartsheet;五、Clarizen;六、Backlog。PingCode 是国内2021年软件项目管理榜单排名名列前茅的项目管理软件(36氪发布),在软件项目管理方面它有着非常多其他软件都不具备的优势。 一、P…

    2023年3月31日
    10700
  • Serverless架构在云原生应用中的作用

    Serverless架构在云原生应用中扮演了至关重要的角色。主要是因为这种架构提供了一种支付策略,即按需支付,它有效减轻了资源管理的负担、提高了运营效率。Serverless架构的核心功能可概括为1、成本效益、2、灵活伸缩、3、事件驱动、4、快速部署。它通过这些功能支持云原生应用的迅猛发展,促进了应…

    2023年11月23日
    1800

发表回复

登录后才能评论
站长微信
站长微信
电话联系

400-800-1024

工作日9:30-21:00在线

分享本页
返回顶部