预览加载中,请您耐心等待几秒...
1/10
2/10
3/10
4/10
5/10
6/10
7/10
8/10
9/10
10/10
亲,该文档总共37页,到这已经超出免费预览范围,如果喜欢就直接下载吧~
如果您无法下载资料,请参考说明:
1、部分资料下载需要金币,请确保您的账户上有足够的金币
2、已购买过的文档,再次下载不重复扣费
3、资料包下载后请先用软件解压,在使用对应软件打开
会计学5.1数组的定义数组可看成是一种特殊的线性表,其特殊在于,表中的元素本身(běnshēn)也是一种线性表。多维数组是向量(一维数组)的推广。例如,二维数组:a00a01…a0,n-1a10a11…a1,n-1…………am-1,0am-1,1…am-1,n-1ADTArray{数据对象:ji=0,…,bi-1,i=1,2,…,n,D={aj1j2…jn|n称为数组的维数,bi是数组第i维的长度,ji是数组元素(yuánsù)的第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ánsù)变量,随后是n个下标值。操作结果:若各个下标不超界,则e赋值为所指定的A的元素(yuánsù)值,并返回OKAssign(&A,e,index1,…,indexn)初始条件:A是n维数组,e为元素(yuánsù)变量,随后是n个下标值。操作结果:若各个下标不超界,则将e的值赋给所指定的A的元素(yuánsù)值,并返回OK}ADTArray在C语言中,一个二维数组类型可以定义为其分量类型为一维数组类型的一维数组类型,也就是说,typedefElemTypeArray2[m][n];等价于:typedefElemTypeArray1[n];typedefArray1Array2[m];数组一旦被定义,它的维数和维界就不再改变。因此,除了结构(jiégòu)的初始化和销毁之外,数组的基本操作只有存取元素和修改元素值的操作。5.2数组的顺序表示和实现(shíxiàn)由于计算机的内存结构是一维的,因此用一维内存来表示多维数组,就必须按某种次序将数组元素排成一个序列,然后将这个线性序列存放在存储器中。又由于对数组一般不做插入和删除操作,也就是说,数组一旦建立,结构中的元素个数和元素间的关系就不再发生变化。因此,一般都是采用顺序存储的方法来表示数组。通常有两种顺序存储方式:低下标优先高下标优先对二维数组而言:⑴以行序为主序——将数组元素按行排列,第i+1个行向量紧接在第i个行向量后面。在C语言中,数组就是按行优先(yōuxiān)顺序存储的。⑵以列序为主序——将数组元素按列排列,第i+1个列向量紧接在第i个列向量后面。顺序存储的数组是一个随机存取结构。1、一维数组5.3矩阵的压缩存储高级语言编制程序时,常将一个矩阵描述为一个二维数组。这种存储表示可以对元素随机存取,各种矩阵运算也非常简单。矩阵中非零元素呈某种规律(guīlǜ)分布或者矩阵中出现大量的零元素的情况下,存储空间大量浪费。当一个矩阵中的元素有很多都是零时,零元素的个数远大于非零元素,则称该矩阵为稀疏矩阵。矩阵的压缩存储——为多个相同的非零元素只分配一个存储空间;对零元素不分配空间。5.3.1特殊矩阵——非零元素或零元素的分布有一定规律的矩阵。1、对称矩阵在一个n阶方阵A中,若元素满足下述性质:aij=aji0≦i,j≦n-1则称A为对称矩阵。只要存储(cúnchǔ)矩阵中上三角或下三角中的元素,让每两个对称的元素共享一个存储(cúnchǔ)空间,这样,能节约近一半的存储(cúnchǔ)空间。例如,存下三角阵。下三角(sānjiǎo)阵sa[k]的下标k和aij的对应关系是:i*(i+1)/2+j当i≧jj*(j+1)/2+i当i<j2、三角矩阵上三角或下三角。a00a01…a0,n-1a00c…cca11…a1,n-1a10a11…c…………………..……………….cc…an-1,n-1an-1,0an-1,1…an-1,n-1(a)上三角矩阵(b)下三角矩阵上三角阵sa[k]的下标k和aij的对应关系是:i(2n-i+1)/2+j-i当i≦jn(n+1)/2当i>j3、对角矩阵(带状矩阵)对角矩阵中,所有的非零元素集中在以主对角线为中心的带状区域(qūyù)中,即除了主对角线和主对角线相邻两侧的若干条对角线上的元素之外,其余元素皆为零。对角矩阵可按行为主序或对角线的顺序,将其压缩存储到一个(yīɡè)向量中,并且也能找到每个非零元素和向量下标的对应关系。如果按行为主序来存储(cúnchǔ),除第0行和第n-1行是2个元素外,每行的非零元素都是3个,因此,需存储(cúnchǔ)的元素个数为3n-2。sa[0..3n-1]压缩存储原则:只存矩阵(jǔzhèn)的