数据结构C语言实现稀疏矩阵的压缩和运算的三元组顺序表表示法

总结:三元组顺序表示法表示稀疏矩阵有一定的局限性,特别是在矩阵的乘法的时候,非常复杂。头文件#ifndefSYZHEAD_H_INCLUDED#defineSYZHEAD_H_INCLUDED#include<stdio.h>#include<stdlib.h>typedefintElemType;typedefstruct{introw;intcol;ElemTypeelem;}Triple;typedefstruct{Triple*pdata;intrnum;intcnum;inttnum;}TSMatrix;intCreateMatrix(TSMatrix*M);intDestroyMatrix(TSMatrix*M);intPrintMatrix(TSMatrix*M);intPrintTriple(TSMatrix*M);intCopyMatrix(TSMatrix*Dest,TSMatrixSource);intTransposeMatrix(TSMatrix*Dest,TSMatrixSource);intAddMatrix(TSMatrix*Q,TSMatrixM,TSMatrixN);intSubMatrix(TSMatrix*Q,TSMatrixM,TSMatrixN);intMultMatrix(TSMatrix*Q,TSMatrixM,TSMatrixN);#endif//SYZHEAD_H_INCLUDED函数的实现#include"syzhead.h"intCreateMatrix(TSMatrix*M){printf("pleaseinputthernum,cnum,tnumofM\n");scanf("%d%d%d",&M->rnum,&M->cnum,&M->tnum);M->pdata=(Triple*)malloc((M->tnum&#43;1)*sizeof(Triple));if(!M->pdata){exit(1);}intcount=1;while(count<=M->tnum){scanf("%d%d%d",&M->pdata[count].row,&M->pdata[count].col,&M->pdata[count].elem);---本文来源于网络,仅供参考,勿照抄,如有侵权请联系删除---if(M->pdata[count].row>M->rnum||M->pdata[count].col>M->cnum){printf("IndexERROR!\n");exit(1);}count&#43;&#43;;}return0;}intDestroyMatrix(TSMatrix*M){if(!M->pdata){printf("ERROR!\n");exit(1);}free(M->pdata);M->pdata=NULL;M->cnum=0;M->rnum=0;M->tnum=0;return0;}intPrintMatrix(TSMatrix*M){inti,j;intcount=1;for(i=1;i<=M->rnum;i&#43;&#43;){for(j=1;j<=M->cnum;j&#43;&#43;){if((M->pdata[count].row==i)&&(M->pdata[count].col==j)){printf("%d\t",M->pdata[count].elem);count&#43;&#43;;}else{printf("0\t");}}printf("\n");}return0;}intPrintTriple(TSMatrix*M){inti;for(i=1;i<=M->tnum;i&#43;&#43;){printf("%d\t%d\t%d\n",M->pdata[i].row,M->pdata[i].col,M->pdata[i].elem);---本文来源于网络,仅供参考,勿照抄,如有侵权请联系删除---}return0;}intCopyMatrix(TSMatrix*Dest,TSMatrixSource){Dest->cnum=Source.cnum;Dest->rnum=Source.rnum;Dest->tnum=Source.tnum;Dest->pdata=(Triple*)malloc((Dest->tnum&#43;1)*sizeof(Triple));inti=1;while(i<=Dest->tnum){Dest->pdata[i].row=Source.pdata[i].row;Dest->pdata[i].col=Source.pdata[i].col;Dest->pdata[i].elem=Source.pdata[i].elem;i&#43;&#43;;}return0;}intTransposeMatrix(TSMatrix*Dest,TSMatrixSource){Dest->rnum=Source.cnum;Dest->cnum=Source.rnum;Dest->tnum=Source.tnum;Dest->pdata=(Triple*)malloc((Dest->tnum&#43;1)*sizeof(Triple));inti;intcol;intcount=1;for(col=1;col<=Source.cnum;col&#43;&#43;){for(i=1;i<=Source.tnum;i&#43;&#43;){if(Source.pdata[i].col==col){Dest->pdata[count].row=Source.pdata[i].col;Dest->pdata[count].col=Source.pdata[i].row;Dest->pdata[count].elem=Source.pdata[i].elem;count&#43;&#43;;}}}return0;}intAddMatrix(TSMatrix*Q,TSMatrixM,TSMatrixN){if(M.rnum!=N.rnum||M.cnum!=N.cnum){printf("can'tadd!\n");exit(1);}Q->cnum=M.cnum;Q->rnum=M.rnum;---本文来源于网络,仅供参考,勿照抄,如有侵权请联系删除---intmemsize=M.tnum&#43;N.tnum&#43;1;Q->pdata=(Triple*)malloc(memsize*sizeof(Triple));if(!Q->pdata){printf("ERROR!\n");exit(1);}inti;intj;intcount=1;intcountm=1;intcountn=1;inttemp=0;for(i=1;i<=Q->rnum;i&#43;&#43;){for(j=1;j<=Q->cnum;j&#43;&#43;){if((M.pdata[countm].row==i)&&(M.pdata[countm].col==j)&&(N.pdata[countn].row==i)&&(N.pdata[countn].col==j)){temp=M.pdata[countm].elem&#43;N.pdata[countn].elem;countm&#43;&#43;;countn&#43;&#43;;}elseif((M.pdata[countm].row==i)&&(M.pda...

1、当您付费下载文档后,您只拥有了使用权限,并不意味着购买了版权,文档只能用于自身使用,不得用于其他商业用途(如 [转卖]进行直接盈利或[编辑后售卖]进行间接盈利)。
2、本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供参考,付费前请自行鉴别。
3、如文档内容存在侵犯商业秘密、侵犯著作权等,请点击“举报”。

常见问题具体如下:

1、问:已经付过费的文档可以多次下载吗?

      答:可以。登陆您已经付过费的账号,付过费的文档可以免费进行多次下载。

2、问:已经付过费的文档不知下载到什么地方去了?

     答:电脑端-浏览器下载列表里可以找到;手机端-文件管理或下载里可以找到。

            如以上两种方式都没有找到,请提供您的交易单号或截图及接收文档的邮箱等有效信息,发送到客服邮箱,客服经核实后,会将您已经付过费的文档即时发到您邮箱。

注:微信交易号是以“420000”开头的28位数字;

       支付宝交易号是以“2024XXXX”交易日期开头的28位数字。

客服邮箱:

biganzikefu@outlook.com

所有的文档都被视为“模板”,用于写作参考,下载前须认真查看,确认无误后再购买;

文档大部份都是可以预览的,笔杆子文库无法对文档的真实性、完整性、准确性以及专业性等问题提供审核和保证,请慎重购买;

文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为依据;

如果您还有什么不清楚的或需要我们协助,可以联系客服邮箱:

biganzikefu@outlook.com

常见问题具体如下:

1、问:已经付过费的文档可以多次下载吗?

      答:可以。登陆您已经付过费的账号,付过费的文档可以免费进行多次下载。

2、问:已经付过费的文档不知下载到什么地方去了?

     答:电脑端-浏览器下载列表里可以找到;手机端-文件管理或下载里可以找到。

            如以上两种方式都没有找到,请提供您的交易单号或截图及接收文档的邮箱等有效信息,发送到客服邮箱,客服经核实后,会将您已经付过费的文档即时发到您邮箱。

注:微信交易号是以“420000”开头的28位数字;

       支付宝交易号是以“2024XXXX”交易日期开头的28位数字。

确认删除?