数据结构:数组
程序员文章站
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)是非线性结构
多维数组的存储表示:
-行优先顺序存储(低下标优先)
最左边下标变化最慢,最右边下标变化快,右边下标变化一遍,与之相邻的左边下标才变化一遍
-列优顺序存储(高下标优先)