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

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

一、数组属于线性表吗

数组属于线性表。

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

二、数组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, ZLW的头像Z, ZLW
上一篇 2023年4月15日 下午6:53
下一篇 2023年4月15日

相关推荐

  • 最好用的10款人力资源SAAS软件盘点

    本文将介绍以下10款工具:Moka、北森云计算、智能人事、蓝凌OA、人瑞人才、Rippling、Sage HR、Deel、Gusto、TriNet。 在管理人力资源时,选择正确的工具至关重要。市场上的众多SAAS软件选项可能会让你感到不知所措,特别是在试图找到能够提升团队效率和员工满意度的解决方案时…

    2024年8月3日
    400
  • 简化HR工作:9款顶级软件工具评测

    文章将介绍以下9款人力资源管理工具:Moka、HiHR、百应HR、天助网、华天动力HRM、Calabrio ONE、Clockify、WorkForce Software、BambooHR。 在现代企业管理中,人力资源部门的效率直接影响到整个组织的运营效能。一款好用且靠谱的人力资源管理软件不仅可以帮…

    2024年8月3日
    800
  • 有哪些好用靠谱的人力资源管理软件推荐?使用最广泛的11款

    文章介绍了11款人力资源管理工具:Moka、友人才、北森HRSaaS、同鑫eHR、i人事、红海eHR、BambooHR、Skuad、Hibob、OrangeHRM、Verint。 在选择人力资源管理软件时,选错不仅浪费时间和金钱,还会影响团队的工作效率和员工满意度。本文总结了11款使用最广泛、口碑最…

    2024年8月3日
    600
  • 管理类项目应用领域有哪些

    管理类项目应用领域广泛且多样,涵盖了各个行业和领域。首先,科技行业,例如软件开发、网络安全、人工智能等,都需要用到项目管理的知识和技能。其次,建筑行业,包括建筑设计、施工、装修等,都需要进行项目管理。再者,教育行业,包括学校管理、课程设计、教学改革等,也需要进行项目管理。另外,医疗行业,如医院管理、…

    2024年8月3日
    600
  • 项目总承包的管理方法有哪些

    项目总承包的管理方法主要包括:明确项目目标、设计合理的项目计划、设置明确的执行标准、进行有效的风险管理、建立有效的沟通机制、持续的项目监控、采取灵活的变更管理、实施全面的质量控制、进行科学的成本控制和使用先进的项目管理工具。其中,设计合理的项目计划是基础,它涵盖了项目的时间、资源和成本等关键因素。项…

    2024年8月3日
    1000

发表回复

登录后才能评论
注册PingCode 在线客服
站长微信
站长微信
电话联系

400-800-1024

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

分享本页
返回顶部