稀疏矩阵加法乘法c语言实现,稀疏矩阵的加法和乘法c语言(十字链算法)

满意答案

dcebd7a0de6265b6ccae5ead692f1eab.png

theyc

2013.05.21

dcebd7a0de6265b6ccae5ead692f1eab.png

采纳率:40%    等级:12

已帮助:7303人

你没有写具体要求,是用采用三元组作存储结构还是数组,下面是我们以前做过的数据结构习题你参考一下:

能区分加法、减法、乘法和转置;能处理任意输入的典型数据和进行出错数据处理(例如乘法,当第一个矩阵的列数不等于第二个矩阵的行数时);必须采用三元组作存储结构,不能采用数组等形式;输出要求用矩阵的形式输出(即习题集136页的形式),当第一个矩阵的行数不等于第二个矩阵的行数时,注意如第三个乘法的形式输出

******************************************************************************************

#include

#define maxsize 100

typedef struct

{

int i,j; //该非零元的行和列

int v; //该非零元的值

}triple;

typedef struct

{

triple data[maxsize]; //非零元三元组表,data[0]未用

int rpos[maxsize];

int m,n,t; //矩阵的行数,列数和非零元个数

}tripletable;

void convert() //矩阵的转置

{

int k;

tripletable A,B;

printf("输入稀疏矩阵A的行数,列数和非零元个数:");

scanf("%d %d %d",&A.m,&A.n,&A.t);

for(k=1;k<=A.t;k++)

{

printf("输入第%d个非0元素的行数,列数和值:",k);

scanf("%d %d %d",&A.data[k].i,&A.data[k].j,&A.data[k].v);

}

B.m=A.m;B.n=A.n;B.t=A.t;

if(B.t)

{

int q=1,col;

for(col=1;col<=A.n;++col)

for(int p=1;p<=A.t;++p)

if(A.data[p].j==col)

{

B.data[q].i=A.data[p].j;

B.data[q].j=A.data[p].i;

B.data[q].v=A.data[p].v;

++q;

}

}

int shuru[100][100]={0};

for(k=1;k<=B.t;k++)

{

shuru[B.data[k].j][B.data[k].i]=B.data[k].v;

}

printf("输入为:\n");

for(k=1;k<=B.m;k++)

{

for(int l=1;l<=B.n;l++)

printf("%d 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值