为了正常的体验网站,请在浏览器设置里面开启Javascript功能!

稀疏矩阵运算器

2017-10-16 18页 doc 37KB 16阅读

用户头像

is_036899

暂无简介

举报
稀疏矩阵运算器稀疏矩阵运算器 #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,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索