数据结构-串数组和广义表--jy.pptVIP

  • 0
  • 0
  • 约8.11千字
  • 约 44页
  • 2019-11-06 发布于广东
  • 举报
这些元素存放在一个向量sa[0..n(n+1)/2-1]中。为了便于访问对称矩阵A中的元素,必须在aij和sa[k]之间找一个对应关系。 若i≧j,则ai j在下三角形中: k=i*(i-1)/2+j-1 0≦kn(n+1)/2 ;1≦i,j≦n 若ij,则aij是在上三角矩阵中。因为aij=aji,只要交换上述对应关系式中的i和j即可得到: k=j*(j-1)/2+i-1 0≦ kn(n+1)/2 ;1≦i,j≦n 令 I=max(i,j), J=min(i,j),则k和 i, j的对应关系可统一为: k=I*(I+1)/2+J 0≦ kn(n+1)/2 ; 1≦I≦n 2. 三角矩阵 以主对角线划分,三角矩阵有上三角和下三角两种。上三角矩阵如图(a)所示,它的下三角(不包括主对角线)中的元素均为常数。下三角矩阵正好相反,它的主对角线上方均为常数,如图(b)所示。 a00 a01 … a 0 n-1 a00 c … c c a11 … a 1 n-1 a10 a11 … c ………………….. …………….. c c … a n-1 n-1 an-1 0 an-1 1 … an-1 n-1 (a)上三角矩阵 (b)下三角矩阵 三角矩阵 三角矩阵中的重复元素c可共享一个存储空间,其余的元素有n(n+1)/2个,因此,三角矩阵可压缩存储到向量sa[0..n(n+1)/2]中,其中c存放在向量的最后一个分量中。 下三角矩阵,按行优先顺序存放时,和对称矩阵类似,sa[k]和aij对应关系是: i(i-1)/2+j -1 i≧j n(n+1)/2 ij (0≦kn(n+1)/2 ;1≦i,j ≦n) 上三角矩阵,按行优先顺序存放时, sa[k]和aij的对应关系是: (i-1)(2n-i+2)/2+(j-i) 当i≦j n(n+1)/2 当ij k= k= 3.对角矩阵 对角矩阵中,所有的非零元素集中在以主对角线为了中心的带状区域中,即除了主对角线和主对角线相邻两侧的若干条对角线上的元素之外,其余元素皆为零。下图给出了一个三对角矩阵。 a00 a01 a10 a11 a12 a21 a22 a23 …. ….. …. an-2 n-3 an-2 n-2 an-2 n-1 an-1 n-2 an-1 n-1 三对角矩阵 一个k对角矩阵(k为奇数)A是满足下述条件的矩阵:若∣i-j∣(k-1)/2 ,则元素 aij=0。 三对角矩阵可按行优序为主序来存储。 除第1行和第n行是2个元素外,每行的非零元素都要是3个,因此,需存储的元素个数为3n-2。 三对角矩阵可压缩存储到向量sa[0..3n-3]中,sa[k]和aij对应关系是: k=3*(i-1)-1+(j-i+1) =2*i+j-3 (0≦kn(n+1)/2 ;1≦i,j≦n) 4.3 广义表 广义表(列表): n ( ? 0 )个表元素组成的有限序列, 记作LS = (a0, a1, a2, …, an-1) LS是表名,ai是表元素,它可以是表 (称为子表),可以是数据元素(称为原子)。 n为表的长度。n = 0 的广义表为空表。 线性表的成分都是结构上不可分的单元素。 广义表的成分可以是单元素,也可以是有结构的表。 线性表是一种特殊的广义表。 广义表不一定是线性

文档评论(0)

1亿VIP精品文档

相关文档