稀疏矩阵运算器稀疏矩阵运算器
#include
#include
#define maxsize 100
typedef int elemtype;
typedef struct{
int i,j;//在矩阵中的位置下标
int v;//非零元素
}triple;//三元组
typedef struct{
triple data[maxsize];//三元组数组
int rnum,cnum,sum;//行数,列数,非零元素个数
}triplematrix;
void InputData(triplematrix...
稀疏矩阵运算器
#include
#include
#define maxsize 100
typedef int elemtype;
typedef struct{
int i,j;//在矩阵中的位置下标
int v;//非零元素
}triple;//三元组
typedef struct{
triple data[maxsize];//三元组数组
int rnum,cnum,sum;//行数,列数,非零元素个数
}triplematrix;
void InputData(triplematrix *m) {
int count;//计数器
int n=1;
triple t;
//开始输入稀疏矩阵的行数,列数,非零元素个数
printf("请输入稀疏矩阵的行数,列数,非零元素个数,三个数据之间用,隔开\n");
scanf("%d,%d,%d",&m->rnum,&m->cnum,&m->sum);
printf("-------------------------------------------------------------------------\n");
count=0;
printf("请输入稀疏矩阵中数据,按照行序输入,顺次为:行,列,元素\n");
printf("三个数据之间用,隔开\n");
while (1)
{
printf("%d:",n++);
scanf("%d,%d,%d",&t.i,&t.j,&t.v);//获取三元组数组,要求按行序输入
if(t.i>=0&&t.irnum&&t.j>=0&&t.jcnum)
{//三元组数据合法
m->data[count]=t;
count++;
if(count==m->sum)
break;
}
else
{
printf("遇到非法输入\n");
break;
}
}
}
triplematrix TransposeMatrix(triplematrix m)
{//返回矩阵m的转置矩阵
int *count,*rpos;
triplematrix T;
int k,i,r;
count=(int *)malloc(sizeof(int)*m.cnum);//count[i]将存放矩阵m第i列非零元素个数
rpos=(int*)malloc(sizeof(int)*m.cnum);//rpos[i]将存放转置后的矩阵行非零的存储起点
if(count==NULL||rpos==NULL)
{
printf("no enough memory\n");
}
for(i=0;iB.data[k2].j)
{//A的列大于B的列,B的元素直接插入到C的对应位置中
C.data[k].i=B.data[k2].i;
C.data[k].j=B.data[k2].j;
C.data[k].v=B.data[k2].v;
k2++;
k++;
}
}
else if(A.data[k1].iB.data[k2].i)
{//B的行小于A的行数,B的元素直接插入到C的对应位置中
C.data[k].i=B.data[k2].i;
C.data[k].j=B.data[k2].j;
C.data[k].v=B.data[k2].v;
k2++;
k++;
}
}//EndWhile
if(k1=B.sum)
{//B结束A还有元素
while(k1B.data[k2].j)
{//A的列大于B的列
C.data[k].i=B.data[k2].i;
C.data[k].j=B.data[k2].j;
C.data[k].v=0-B.data[k2].v;
k2++;
k++;
}
}
else if(A.data[k1].iB.data[k2].i)
{//B的行小于A的行数,B的元素的相反数直接插入到C的对应位置中
C.data[k].i=B.data[k2].i;
C.data[k].j=B.data[k2].j;
C.data[k].v=0-B.data[k2].v;
k2++;
k++;
}
}//EndWhile
if(k1=B.sum)
{//B结束A还有元素
while(k1
本文档为【稀疏矩阵运算器】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑,
图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。