数组


二维数组

二维数组是一个矩阵,缺位的值补0。数组所需内存空间为n*sizeof(int),我们可将该下标对应的元素存储在以下位置

start+map(i1+i2+….in) * sizeof(int)

行主序

map(i,k) = 列*行+列

列主序

map(i,k)=列乘列+行

三维数组

nap(i,k,j) =i*u2 *u3+k *u3 + j

矩阵压缩

三角矩阵

对称矩阵

n*n矩阵M是一个对称矩阵,对称矩阵中,以对角线为界,上三角部分与下三角部分对称相等。对于对称矩阵,因为对角线以及上下元素相等,所以只需要保存其中一半,即对角线上的元素。例如若有n行n列,则这种形式下需要保持元素的个数为n(n+1)/2

行主序

对于采用压缩存储方式保存的特殊矩阵,map(i,j) = i * (i+j)/2+i(0≤i≤n-1,0≤j≤i),注意当j>i时,应返回0.

对于仅保存上三角或下三角部分会有如下取值:

下三角:当i≥j,则i * (i+1)/2+j

上三角:当i<j,则 j * (j+1)/2+i

稀疏矩阵

矩阵中可能会出现大量的0元素,而非0元素数量很少,这就是所谓的稀疏矩阵。

广义表

A = ()空表,长度为0,深度为1

B = (()),B的长度为1,深度为2

C=(6,2),C的长度为2,深度为1,两个元素都是原子

D=(‘a’,(12,’b’,4)),D的长度为2,深度为2,含一个原子和子表

E=(C、D、A),长度为3,深度为3,三个子表

F=(C),长度为1,深度为2,一个子表

G=(4,G),长度为2,深度为∞,是递归表。


文章作者: Gustavo
版权声明: 本博客所有文章除特別声明外,均采用 CC BY-NC 4.0 许可协议。转载请注明来源 Gustavo !
评论
  目录