首页 > 代码库 > 稀疏矩阵的反转(普通反转和正常反转)
稀疏矩阵的反转(普通反转和正常反转)
#include "stdafx.h"#include <iostream>using namespace std;typedef int DataType;#define SIZE 100typedef struct{ int i,j; DataType e;}Triple;typedef struct{ Triple data[SIZE+1]; int mu,nu,tu;}TSMatrix;void transpose(TSMatrix M,TSMatrix &T){ //交换行列数 T.mu = M.tu; T.nu = M.mu; T.tu = M.tu; if(T.tu) { int q = 1; for(int col =1;col<M.nu;++col) { for(int p=1;p<M.tu;++p) { if(M.data[p].j = col) { T.data[q].i = M.data[p].j; T.data[q].j = M.data[p].i; T.data[q].e = M.data[p].e; ++q; } } } }}void input1(TSMatrix &M){ printf("input nu mu tu(With a space interval)of a Matrix:\n"); scanf_s("%d%d%d",M.nu,M.mu,M.tu); //row,colume,and tu printf("Please input the data of Matrix:\n"); for(int c=1;c<=M.tu;c++) { scanf_s("%d",&M.data[c].i); scanf_s("%d",&M.data[c].j); scanf_s("%d",&M.data[c].e); }//for }int PrintM(TSMatrix T) { printf("Matrix after transpose is:\n"); for(int c=1;c<=T.tu;c++) { printf("%d %d %d\n",T.data[c].i,T.data[c].j,T.data[c].e); }//for return 1; }//InPut void fastTranspose(TSMatrix M,TSMatrix &T){ //交换行列数 T.mu = M.tu; T.nu = M.mu; T.tu = M.tu; int cpot[SIZE+1],num[SIZE+1]; if(M.tu) { for(int col=1;col<M.mu;col++) num[col]=0; for(int t=1;t<M.tu;t++) ++num[M.data[t].j]; cpot[1] = 1; for(int col=2;col<M.mu;col++) cpot[col]=cpot[col-1]+num[col-1]; for(int p=1;p<M.tu;++p) { int col = M.data[p].j; int q = cpot[col]; T.data[q].i=M.data[p].j; T.data[q].j=M.data[p].i; T.data[q].e=M.data[p].e; ++cpot[col]; } }}/*void main(){ TSMatrix M; TSMatrix T; input1(M); fastTranspose(M,T); PrintM(M);}*/
稀疏矩阵的反转(普通反转和正常反转)
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。