查找PPT.pptVIP

  1. 1、本文档共49页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
查找PPT

第五章 数组和广义表 Status MlutSMatrix (RLSMatrix M, RLSMatrix N, RLSMatrix Q) { //求矩阵乘积Q = M×N,采用逻辑链接存储表示。 if (M.nu != N.mu) return ERROR; Q.mu = M.mu; Q.nu = M.nu; Q.tu = 0; //Q初始化 if (M.tu * N.tu !=0) { //Q是非零矩阵 for (arow = 1; arow = M.mu; ++ arow) { //处理M的每一行 ctemp[ ] = 0; //当前各元素累加器清零 Q.rpos[arow] = Q.tu + 1; if (arow M.mu) tp = M.rpos[arow + 1]; 两个稀疏矩阵相乘(Q = M×N)的过程可大致描述如下: Q初始化; if (Q是非零矩阵) { //逐行求积 for (arow = 1; arow = M.mu; ++ arow) { //处理M的每一行 ctemp[ ] = 0; //累加器清零 计算Q中第arow行的积并存入ctemp[ ]中; 将ctemp[ ]中非零元压缩存储到Q.data; } // for arow } // if 算法5.3是上述过程求精的结果。 算法5.3如下: else tp = M.tu + 1; for (p = M.rpos[arow]; p tp; ++p) { //为当前行中每一个非零元找到对应元在N中的行号 brow = M.data[p].j; if (brow N.mu) t = N.rpos[brow + 1]; else t = N.tu + 1; for (q = N.rpos[brow]; q t; ++q) { ccol = N.data[q].j; //乘积元素在Q中的列号 ctemp[ccol] + = M.data[p].e * N.data[q].e; } // for q } //求得Q中第crow( = arow)行的非零元 for (ccol = 1; ccol = Q.nu; ++ccol) //压缩存储该行非零元 if (ctemp[ccol]) { if (++Q.tu MAXSIZE) return ERROR; Q.data[Q.tu] = (arow, ccol, ctemp[ccol]); } // if } // for arow } // if return OK; } // MlutSMatrix 时间复杂度:O(M.mu×N.nu+M.tu×N.tu/N.mu)。 其中累加器ctemp初始化的时间复杂度为O(M.mu×N.nu), 求Q的所有非零元的时间复杂度为O(M.tu×N.tu/N.mu), 进行压缩存储的时间复杂度为O(M.mu×N.nu)。 ③十字链表 1.定义 十字链表:在链表中,每个非零元既是某个行链表中的一个结点, 又是某个列链表中的一个结点,这个矩阵构成了一个十字交叉的链表 结构。可用两个分别存储行链表的头指针和列链表的头指针的一维数 组表示之。 2.结点结构 row col val down right 其中,row,col和val分别表示该非零元所在的行、列和非零元的值。 right域,用以链接同一行中下一个非零元。down域,用以链接同一 列中下一个非零元。 3.图形表示 例如,矩阵M= 的十字链表如图5.6所示。 图5.6 稀疏矩阵M的十字链表 M.chead 3 1 2 M.rhead 1 1 3 1 4 5 2 2 -1 4.C语言描述 //-----------------------稀疏矩阵的十字链表存储表示----------------------------- typedef struct OLNode { int i, j; //该非零元的行和列下标

您可能关注的文档

文档评论(0)

panguoxiang + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档