首页 > 代码库 > 稀疏矩阵的反转(普通反转和正常反转)

稀疏矩阵的反转(普通反转和正常反转)

#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);}*/

  

稀疏矩阵的反转(普通反转和正常反转)