正在加载图片...
/出队列* if( quelen=0)eror(“队空!”); else{ frone=(real- quelen+1+(m+1)%m+1),/计算对头下标* X-cycque frone]; quelen 5. void trans mat trix(Date lype a[mJ[n], SpMatrix Tp b) for(I=1; I<=m; 1++) for(=l; j<=n:j++) f(aj)/*非零元素 /*给三元组赋值* b. datalp b data[p]=j b. datalp]. v=alll bmu=m;bnu=n;b.tu=p,/*赋行数、列数和非0元素数* 6.本题首先判断三元组A,B表示的矩阵是否行列相同,若相同才能进行矩阵的加法 运算。若三元组表示的矩阵能进行相加运算,其思路如下: 若ab表的指针均没有到表尾,重复下列步骤: (1)若a表元素的ⅰ域值小于b表元素的i域值,将a表当前元素插入到c表表尾,a 表指针后移。 (2)若a表元素的ⅰ域值大于b表元素的i域值,将b表当前元素插入到c表表尾,b 表指针后移 (3)若a表元素的i域值等于b表元素的i域值,又分以下几种情况讨论: ①若a表元素的j域值小于b表元素的j域值,将a表当前元素插入到c表表尾,a表 指针后移。 ②若a表元素的j域值大于b表元素的j域值,将b表当前元素插入到c表表尾,b表 指针后移。 ③若a表元素的j域值等于b表元素的j域值,若a,b表当前元素的v域值和非零, 则在c表表尾播入元素的IU域值等于a表当前元素的I域的值,域v的值等于a,b表 的域值的和,将a,b表当前指针后移 (4)若a表的指针没到表尾,b表的指针到表尾,将a表剩余元素依次插入到c表表尾 否则,将b表剩余元素依次插入到c表表尾 SpMaterixTp trsxsum(SpMaterixTp a, SpMaterixTp b, SpMaterixTp c lif((a. mu=b. mu)&&(a nu=b mu)) /*a,b为同行同列矩阵*/ Ic mu=a. mu :c nu=a. nu: I=l: j=l: p=0 f(a tu&&b tu) /*a,b为非空矩阵*/ cola=a.data[I].i;rowa=a.data[I].j;/*取三元组a的元素的行、列下标*/ colb=b.data[j].i;rowb=b.data[j.j;/*取三元组b的元素的行、列下标* hile((I<=a tu)&&(j<=b tu)) cola<colb:/*在c中,插入三元组a的元素*/ p++:c data [p].i=. data [I].i7 /*出队列*/ {if (quelen ==0) error (“队空!”); else { frone =(real- quelen +1+(m+1))%(m+1); /*计算对头下标*/ *X=cycque [frone]; quelen--; } } 5. void trans_mat _trix(DateType a[m][n],SpMatrixTp b ) {p=0; for (I=1; I<=m ; I++) for (j=1; j<=n;j++) if (a[I][j]) /*非零元素*/ {p++; /*给三元组赋值*/ b.data[p].i=I; b.data[p].j=j; b.data[p].v=a[I][j]; } b.mu=m; b.nu=n; b.tu=p; /*赋行数、列数和非 0 元素数*/ } 6.本题首先判断三元组 A,B 表示的矩阵是否行列相同,若相同才能进行矩阵的加法 运算。若三元组表示的矩阵能进行相加运算,其思路如下: 若 a,b 表的指针均没有到表尾,重复下列步骤: (1) 若 a 表元素的 i 域值小于 b 表元素的 i 域值,将 a 表当前元素插入到 c 表表尾, a 表指针后移。 (2) 若 a 表元素的 i 域值大于 b 表元素的 i 域值,将 b 表当前元素插入到 c 表表尾, b 表指针后移。 (3) 若 a 表元素的 i 域值等于 b 表元素的 i 域值,又分以下几种情况讨论: ①若 a 表元素的 j 域值小于 b 表元素的 j 域值,将 a 表当前元素插入到 c 表表尾,a 表 指针后移。 ②若 a 表元素的 j 域值大于 b 表元素的 j 域值,将 b 表当前元素插入到 c 表表尾,b 表 指针后移。 ③若 a 表元素的 j 域值等于 b 表元素的 j 域值,若 a,b 表当前元素的 v 域值和非零, 则在 c 表表尾播入元素的 I\j 域值等于 a 表当前元素的 I\j 域 的值,域 v 的值等于 a,b 表 的域值的和,将 a,b 表当前指针后移。 (4) 若 a 表的指针没到表尾,b 表的指针到表尾,将 a 表剩余元素依次插入到 c 表表尾, 否则,将 b 表剩余元素依次插入到 c 表表尾. SpMaterixTp trsxsum(SpMaterixTp a, SpMaterixTp b , SpMaterixTp c) {if ( (a .mu=b. mu)&&(a.nu=b.mu)) /*a,b 为同行同列矩阵*/ {c.mu=a.mu ;c.nu=a.nu; I=1; j=1; p=0; if (a.tu&&b.tu) /*a,b 为非空矩阵*/ {cola=a.data[I].i; rowa = a.data[I] .j; /*取三元组 a 的元素的行、列下标*/ colb= b.data[j].i; rowb =b.data[j] .j; /*取三元组 b 的元素的行、列下标*/ while ((I<=a.tu)&&(j<=b.tu)) switch {cola <colb: /*在 c 中,插入三元组 a 的元素*/ p++; c.data [p] .i=a.data [I] .i;
<<向上翻页向下翻页>>
©2008-现在 cucdc.com 高等教育资讯网 版权所有