waiwai4701

没有背后的一直努力,你的以为的隐忍不是隐忍,是懦弱。

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理
#include "stdafx.h"
#include <iostream>

using namespace std;

typedef int DataType;
#define SIZE 100

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

  

posted on 2015-01-16 13:27  waiwai4701  阅读(197)  评论(0编辑  收藏  举报