欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

数据结构:数组

程序员文章站 2022-03-11 12:46:46
...

数组的定义:数组是由n个相同数据类型的数据元素组成的有限序列.
①数组中个元素具有统一的类型
②数组元素的下标一般具有固定的上界和下界,及数组一旦被定义,他的维数和维界就不再改变
③数组的操作比较简单
一维数组(a0,a1,a2,…,ai,…,an-1)

ADT Array1{
数据对象:D={ai|ai∈ElemSet;0<=i<=n-1;n>=0;}
数据关系:R={<i,ai+1>|ai,ai+1∈D,i=1,2,...,n-1}
基本操作:
		InitArray(&A,n)  DestroyArray(&A)
		value(A,&e,i)  Assign(&A,e,i)
}ADT Array1

Loc(ai)=Loc(a0)+i*L;
二维数组

ADT Array2{
数据对象:D={aij|aij∈ElemSet,0<=i<=m-1,0<=j<=n-1}
数据关系:S={R1,R2}
				  R1={<ai,j,ai,j+1>|0<=i<=m-1,0<=j<=n-1}
				  R2={<ai,j,ai,j+1>|0<=i<=m-1,0<=j<=n-1}
基本操作:
				 InitArray(&A,2,m,n)  DestroyArray(&A)
				 value(A,&e,i,j)   Assign(&A,e,i,j)
}ADT Array2

二维数组是非线性结构
二维数组:
-行主序 Loc(aij)=Loc(a00)+(iXn+j)L
-列主序 Loc(aij)=Loc(a00)+(jXm+i)L
多维数组的定义

ADT Array{
	数据对象:D={aj1j2...jn|aj1j2...jn∈ElemSet,其中ji=0,1,...,bi-1,i=1,...,n}
	数据关系:
	S={R1,R2,...Rn}
	Ri={<aj1,...,ji...jn,aj1,...ji+1...jn>|0<=jk<=bk-1,1<=k<=n,且k≠i,
	    0<=ji<=bi-2-1,aj1...ji...jn,aj1...aj+1...jn∈D}
    基本操作:
	InitArray(&A,n,bound1,...,boundn) DestroyArray(&A)
	value(A,&e,index1,...indexn) Assign(&A,e,index1,...indexn) 
}ADT Array

n维数组(n>=2)是非线性结构
多维数组的存储表示:
-行优先顺序存储(低下标优先)
最左边下标变化最慢,最右边下标变化快,右边下标变化一遍,与之相邻的左边下标才变化一遍
-列优顺序存储(高下标优先)

相关标签: 数组