正在加载图片...
算法:具体的算法可以见课本第105页。在本算法中,首先把A和B按行序处理,在处理完行结 点后,再通过遍历处理列链表 /以知A和B,求矩阵C=A+B,其中矩阵采用十字链表表示 status MatrixAdd CrossList( CrossList A, CrossList B, CrossList C /若矩阵A和B的行列不同,返回错误! B.m‖|A.m!=B.nu) return ERROR //矩阵C的行列赋值 B //设置指针pa,pb和pc,分别指向A,B和C的当前行结点 pa =A. pRHead [i] pb =B. pRHead[i] pC =C. pRHead [i] while(pa&&pb)//矩阵A和B的行链表 if(pa>j=pb->j)//同一列结点 0 //申请一个结点 pc->pRight =(OLink)malloc(sizeof (OLNode)) if(! pc->pRight return ERROR //分配内存失败算法:具体的算法可以见课本第 105 页。在本算法中,首先把 A 和 B 按行序处理,在处理完行结 点后,再通过遍历处理列链表。 // 以知 A 和 B,求矩阵 C = A + B,其中矩阵采用十字链表表示 status MatrixAdd_CrossList( CrossList A, CrossList B, CrossList C) { // 若矩阵 A 和 B 的行列不同,返回错误! if( A.mu != B.mu || A.nu != B.nu ) { return ERROR; } // 矩阵 C 的行列赋值 C.mu = A.mu; C.nu = B.nu; C.tu = 0; for(i = 1; i <= C.mu, i++) //针对每一行 { //设置指针 pa,pb 和 pc,分别指向 A,B 和 C 的当前行结点。 pa = A.pRHead[i]; pb = B.pRHead[i]; pc = C.pRHead[i]; while( pa && pb ) // 矩阵 A 和 B 的行链表 { if( pa->j == pb->j ) // 同一列结点 { if( pa->e + pb->e != 0 ) { // 申请一个结点 pc->pRight = (OLink)malloc(sizeof(OLNode)); if(!pc->pRight) { return ERROR; //分配内存失败 } pc = pc->pRight;
<<向上翻页向下翻页>>
©2008-现在 cucdc.com 高等教育资讯网 版权所有