数组属于线性表,原因:线性表就是数据排成像一条线一样的结构,数组用一组连续的内存空间来存储一组具有相同类型的数据,它是一种线性表的实现,它是由固定大小的相同类型元素(数据元素)构成的有限序列,通过下标来访问元素。
一、数组属于线性表吗
数组属于线性表。
原因:线性表就是数据排成像一条线一样的结构,数组用一组连续的内存空间来存储一组具有相同类型的数据,它是一种线性表的实现,它是由固定大小的相同类型元素(数据元素)构成的有限序列,通过下标来访问元素。数组中的元素在内存中是连续存储的,因此可以通过下标来访问数组中的任意元素,这也是数组的特点之一。
二、数组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为一张线性表):
- 建立一个空表:Createlist(L)
- 置空表:ClearList(L)
- 判断表是否为空:IsEmpty(L)
- 若为空返回True(1),否则返回False(0)
- 求表长:Length(L)
- 取表中的某个元素:GetList(L,i),即L[i],要求 0<=i<legth(L)-1
- 定位运算:Locate(L,x) 确定元素x在表L的位置
- 如果存在返回位置信息,如果不存在返回-1
- 插入:Insert(L,x,i),将元素x插入到L表的第i个元素之前,且表长+1
- 添加:Add(L,x),将元素x加入到L表中,且长+1
- 删除:Delete(L,i),删除表L的第i个元素,且表长-1,要求 0<=i<legth(L)-1
- 复合元素
- 合并: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