1 / 37
文档名称:

数据结构:数组学习教案.pptx

格式:pptx   大小:295KB   页数:37页
下载后只包含 1 个 PPTX 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

数据结构:数组学习教案.pptx

上传人:wz_198613 2021/12/28 文件大小:295 KB

下载得到文件列表

数据结构:数组学习教案.pptx

相关文档

文档介绍

文档介绍:会计学
1
数据结构(shù jù jié ɡòu):数组
第一页,共37页。
数组的定义
数组可看成是一种特殊的线性表,其特殊在于,表中的元素本身(běnshēn)也是一种线性表。多维数组是向量(一维数组)的推广。
例如,二维数组:
a00 a01 … a0,n-1
a10 a11 … a1,n-1
… … … …
am-1,0 am-1,1 … am-1,n-1
Amn=
第1页/共37页
第二页,共37页。
ADT Array{
数据对象:ji=0,…,bi-1,i=1,2, …,n,D={aj1j2…jn| n称为数组的维数,bi是数组第i维的长度,ji是数组元素(yuán sù)的第i维下标, aj1j2…jn ∈ElemSet}
数据关系:R={R1,R2,…Rn}
Ri={< aj1 … ji…jn , aj1 … ji+1…jn > | 0≤jk ≤bk-1,1≤k ≤n,且k≠i,0≤ji ≤bi-2 ,aj1 … ji…jn , aj1 … ji+1…jn ∈D,i=2, …,n}
基本操作:
Value(A,&e,index1, …,indexn)
初始条件:A是n维数组,e为元素(yuán sù)变量,随后是n个下标值。
操作结果:若各个下标不超界,则e赋值为所指定的A的元素(yuán sù)值,并返回OK
Assign (&A, e,index1, …,indexn)
初始条件:A是n维数组,e为元素(yuán sù)变量,随后是n个下标值。
操作结果:若各个下标不超界,则将e的值赋给所指定的A的元素(yuán sù)值,并返回OK
} ADT Array
数组的抽象(chōuxiàng)类型定义
第2页/共37页
第三页,共37页。
在C语言中,一个二维数组类型可以定义为其分量类型为一
维数组类型的一维数组类型,也就是说,
typedef ElemType Array2[m][n];
等价于:
typedef ElemType Array1[n];
typedef Array1 Array2[m];
数组一旦被定义,它的维数和维界就不再改变。因此,除
了结构(jiégòu)的初始化和销毁之外,数组的基本操作只有存取元素和
修改元素值的操作。
第3页/共37页
第四页,共37页。
数组的顺序表示和实现(shíxiàn)
由于计算机的内存结构是一维的,因此用一维内存来表示多维数组,就必须按某种次序将数组元素排成一个序列,然后将这个线性序列存放在存储器中。
又由于对数组一般不做插入和删除操作,也就是说,数组一旦建立,结构中的元素个数和元素间的关系就不再发生变化。因此,一般都是采用顺序存储的方法来表示数组。
通常有两种顺序存储方式:
低下标优先
高下标优先
第4页/共37页
第五页,共37页。
对二维数组而言:
⑴以行序为主序——将数组元素按行排列,第i+1
个行向量紧接在第i个行向量后面。在C语言中,数组
就是按行优先(yōuxiān)顺序存储的。
⑵以列序为主序——将数组元素按列排列,第i+1
个列向量紧接在第i个列向量后面。
顺序存储的数组是一个随机存取结构。
第5页/共37页
第六页,共37页。
1、一维数组
LOC ( i ) = LOC ( i -1 ) + l =α+ i*l
数组元素存储地址(dìzhǐ)的计算:
第6页/共37页
第七页,共37页。
2、二维数组
行优先(yōuxiān):
LOC ( i, j ) = α + ( i * n + j ) * l
a00 a01 … a0,n-1
a10 a11 … a1,n-1
… … … …
am-1,0 am-1,1 … am-1,n-1
Amn=
3、n维数组
LOC ( j1, j2, …,jn ) = LOC