20083
数据结构作业 2003 年 第五章 数组
521假设稀疏矩阵A和B均以三元组顺序表作为存储结构:求 C=A+B。 (1)定义类型: +define MAXSIze 100 typedef struct t int i,j;//非零元行、列下标 ElemType e } Triple;//定义三元组 typedef struct Triple dataLMAXSIzE+1 int mu, nu, tu. } SMAtrix;//定义三元组表
(1) 定义类型: #define MAXSIZE 100 typedef struct { int i,j;//非零元行、列下标 ElemType e; } Triple; //定义三元组 typedef struct { Triple data[MAXSIZE+1]; int mu,nu,tu; } TSMatrix; //定义三元组表 5.21 假设稀疏矩阵A和B均以三元组顺序表作为存储结构:求 C=A+B
int ADD(TSMatrix *A, TSMatrix *B, TSMatrixNC) intm=1,n=1,k=1;/*读:m,n,写:k* if(A->mu!=B->mu A->nu!=B->nu) return error while (m<=A->tu & n<=B->tu /*比较A->data和B->data的行、列*/ /*必要时:m+,n++,k++*/ while(m<=A->tu)/米复制A中为处理完的三元组*/ while(n<=B->tu)/*复制B中为处理完的三元组米/
int ADD(TSMatrix *A, TSMatrix *B, TSMatrix *C) { int m=1,n=1,k=1; /*读:m,n, 写:k */ if (A->mu!=B->mu || A->nu!=B->nu) return ERROR; while (m<=A->tu && n<=B->tu) { /*比较A->data和B->data的行、列*/ /*必要时:m++, n++, k++ */ } while (m<=A->tu ) /*复制A中为处理完的三元组*/ while (n<=B->tu ) /*复制B中为处理完的三元组*/ }
int ADD(TSMatrix *A, TSMatrix *B, TSMatrixNC) intm=1,n=1,k=1;/*读:m,n,写:k* if(A->mu!=B->mu A->nu!=B->nu) return error while (m<=A->tu & n<=B->tu /*比较A->data和B->data的行、列*/ /*必要时:m+,n++,k++*/ while(m<=A->tu)/米复制A中为处理完的三元组*/ while(n<=B->tu)/*复制B中为处理完的三元组米/
int ADD(TSMatrix *A, TSMatrix *B, TSMatrix *C) { int m=1,n=1,k=1; /*读:m,n, 写:k */ if (A->mu!=B->mu || A->nu!=B->nu) return ERROR; while (m<=A->tu && n<=B->tu) { /*比较A->data和B->data的行、列*/ /*必要时:m++, n++, k++ */ } while (m<=A->tu ) /*复制A中为处理完的三元组*/ while (n<=B->tu ) /*复制B中为处理完的三元组*/ }
int ADD(TSMatrix *A, TSMatrix *B, TSMatrixNC) intm=1,n=1,k=1;/*读:m,n,写:k* if(A->mu!=B->mu A->nu!=B->nu) return error while (m<=A->tu & n<=B->tu int11,12; 11=A->data [m]. i* A->nu+ A->data [m]. j+1 12=B->data[n]. i* B->nu+ B->data[n]. j+1 f(11<12){/*复制A中的三元组,m++,k+米/ else if(11==12){/*相加* else{/*复制B中的三元组,n+,k++*/}
int ADD(TSMatrix *A, TSMatrix *B, TSMatrix *C) { int m=1,n=1,k=1; /*读:m,n, 写:k */ if (A->mu!=B->mu || A->nu!=B->nu) return ERROR; while (m<=A->tu && n<=B->tu) { int l1,l2; l1= A->data[m].i* A->nu+ A->data[m].j+1; l2= B->data[n].i* B->nu+ B->data[n].j+1; if (l1<l2) { /*复制A中的三元组,m++, k++*/ } else if (ll==l2) {/*相加*/} else {/*复制B中的三元组,n++, k++*/} }…..}