数据结构C语言实现稀疏矩阵的压缩和运算的三元组顺序表表示法Word文档下载推荐.docx

上传人:b****3 文档编号:18244137 上传时间:2022-12-14 格式:DOCX 页数:13 大小:16.14KB
下载 相关 举报
数据结构C语言实现稀疏矩阵的压缩和运算的三元组顺序表表示法Word文档下载推荐.docx_第1页
第1页 / 共13页
数据结构C语言实现稀疏矩阵的压缩和运算的三元组顺序表表示法Word文档下载推荐.docx_第2页
第2页 / 共13页
数据结构C语言实现稀疏矩阵的压缩和运算的三元组顺序表表示法Word文档下载推荐.docx_第3页
第3页 / 共13页
数据结构C语言实现稀疏矩阵的压缩和运算的三元组顺序表表示法Word文档下载推荐.docx_第4页
第4页 / 共13页
数据结构C语言实现稀疏矩阵的压缩和运算的三元组顺序表表示法Word文档下载推荐.docx_第5页
第5页 / 共13页
点击查看更多>>
下载资源
资源描述

数据结构C语言实现稀疏矩阵的压缩和运算的三元组顺序表表示法Word文档下载推荐.docx

《数据结构C语言实现稀疏矩阵的压缩和运算的三元组顺序表表示法Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《数据结构C语言实现稀疏矩阵的压缩和运算的三元组顺序表表示法Word文档下载推荐.docx(13页珍藏版)》请在冰豆网上搜索。

数据结构C语言实现稀疏矩阵的压缩和运算的三元组顺序表表示法Word文档下载推荐.docx

Ò

»

µ

Ä

Ö

Þ

£

¬

Ì

ð

Ç

Ú

¸

´

Í

Î

¼

þ

#ifndefSYZHEAD_H_INCLUDED

#defineSYZHEAD_H_INCLUDED

#include&

lt;

stdio.h&

gt;

stdlib.h&

typedefintElemType;

typedefstruct

{

introw;

intcol;

ElemTypeelem;

}Triple;

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

¯

quot;

syzhead.h&

intCreateMatrix(TSMatrix*M)

printf(&

pleaseinputthernum,cnum,tnumofM\n&

);

scanf(&

%d%d%d&

&

amp;

M-&

rnum,&

cnum,&

tnum);

M-&

pdata=(Triple*)malloc((M-&

tnum&

#43;

1)*sizeof(Triple));

if(!

pdata)

{

exit

(1);

}

intcount=1;

while(count&

=M-&

tnum)

pdata[count].row,&

pdata[count].col,&

pdata[count].elem);

if(M-&

pdata[count].row&

rnum||M-&

pdata[count].col&

cnum)

IndexERROR!

\n&

count&

&

;

return0;

}

intDestroyMatrix(TSMatrix*M)

ERROR!

free(M-&

pdata);

pdata=NULL;

cnum=0;

rnum=0;

tnum=0;

intPrintMatrix(TSMatrix*M)

inti,j;

for(i=1;

i&

rnum;

i&

for(j=1;

j&

cnum;

j&

if((M-&

pdata[count].row==i)&

(M-&

pdata[count].col==j))

%d\t&

M-&

else

0\t&

intPrintTriple(TSMatrix*M)

inti;

tnum;

%d\t%d\t%d\n&

pdata[i].row,M-&

pdata[i].col,M-&

pdata[i].elem);

intCopyMatrix(TSMatrix*Dest,TSMatrixSource)

Dest-&

cnum=Sum;

rnum=Source.rnum;

tnum=Source.tnum;

pdata=(Triple*)malloc((Dest-&

1)*sizeof(Triple));

inti=1;

while(i&

=Dest-&

pdata[i].row=Source.pdata[i].row;

pdata[i].col=Source.pdata[i].col;

pdata[i].elem=Source.pdata[i].elem;

intTransposeMatrix(TSMatrix*Dest,TSMatrixSource)

rnum=Sum;

cnum=Source.rnum;

for(col=1;

col&

=Sum;

col&

=Source.tnum;

if(Source.pdata[i].col==col)

pdata[count].row=Source.pdata[i].col;

pdata[count].col=Source.pdata[i].row;

pdata[count].elem=Source.pdata[i].elem;

intAddMatrix(TSMatrix*Q,TSMatrixM,TSMatrixN)

if(M.rnum!

=N.rnum||M.cnum!

=N.cnum)

can'

tadd!

Q-&

cnum=M.cnum;

rnum=M.rnum;

intmemsize=M.tnum&

N.tnum&

1;

pdata=(Triple*)malloc(memsize*sizeof(Triple));

Q-&

intj;

intcountm=1;

intcountn=1;

inttemp=0;

=Q-&

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&

N.pdata[countn].elem;

countm&

countn&

elseif((M.pdata[countm].row==i)&

(M.pdata[countm].col==j))

temp=M.pdata[countm].elem;

elseif((N.pdata[countn].row==i)&

temp=N.pdata[countn].elem;

if(temp)

if(count&

memsize)

pdata=(Triple*)realloc(Q-&

pdata,(memsize&

1)*sizeof(Triple));

memsize&

²

¿

©

43;

=1;

pdata[count].row=i;

pdata[count].col=j;

pdata[count].elem=temp;

temp=0;

tnum=count-1;

intSubMatrix(TSMatrix*Q,TSMatrixM,TSMatrixN)

tsub!

temp=M.pdata[countm].elem-N.pdata[countn].elem;

temp=-1*N.pdata[countn].elem;

intMultMatrix(TSMatrix*Q,TSMatrixM,TSMatrixN)

if(M.cnum!

=N.rnum)

tmult!

cnum=N.cnum;

intk;

TSMatrixTN;

TransposeMatrix(&

TN,N);

=M.rnum;

=TN.rnum;

while(M.pdata[countm].row&

i)

while(TN.pdata[countn].row&

j)

for(k=1;

k&

=M.cnum;

k&

if(M.pdata[countm].col&

countm&

M.tnum)

if(TN.pdata[countn].col&

countn&

N.tnum)

if(M.pdata[countm].row==i&

TN.pdata[countn].row==j&

M.pdata[countm].col==k&

TN.pdata[countn].col==k)

temp=temp&

M.pdata[countm].elem*TN.pdata[countn].elem;

if(temp!

=0)

countm=1;

countn=1;

 

÷

â

intmain()

/*TSMatrixM;

CreateMatrix(&

M);

PrintTriple(&

PrintMatrix(&

\n\n&

TSMatrixT;

CopyMatrix(&

T,M);

T);

ADD\n&

TSMatrixQ;

AddMatrix(&

Q,M,T);

Q);

SUB\n&

SubMatrix(&

*/

TSMatrixM;

TSMatrixN;

TSMatrixRes;

N);

Res,M,N);

Res);

//chengfu

matrixMisasfollow:

matrixNisasfollow:

MultMatrix(&

TripleResisasfollow:

matrixRESisasfollow:

return0;

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 自然科学 > 物理

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1