数据结构——三元组顺序表以及矩阵转置

#include"iostream"
#include"algorithm"
using namespace std;
#define MAXSIZE 10
typedef struct Triple{
	int i;
	int j;
	int Element;
	Triple(int d=0,int e = 0,int f = 0){
		i = d;
		j = e;
		Element = f;
	}

}Triple;
typedef struct{
	Triple data[MAXSIZE+1];//非零元三元组表,data[0]未用
	int mu,nu,tu;
}TSMatrix;
void TransposeMatrix(TSMatrix M,TSMatrix &T){
	T.mu = M.nu;T.nu = M.mu;T.tu = M.tu;
	if(T.mu){
		int p = 1;
		for(int col = 1;col<=M.mu;col++){
			for(int	q = 1;q<=M.tu;q++)
				if(M.data[q].j == col)
				{

					T.data[p].Element = M.data[q].Element;
					T.data[p].j = M.data[q].i;
					T.data[p].i = M.data[q].j;
					p++;

				}
		}
	}

}
void Output(TSMatrix &tsmatrix){

	for(int i = 1;i<=tsmatrix.tu;i++){
		cout<<"第"<<tsmatrix.data[i].i<<"行"<<"第"<<tsmatrix.data[i].j<<"列"<<"的元素是:"<<tsmatrix.data[i].Element<<endl;
	}


}
int main(){
	TSMatrix tsmatrix;
	tsmatrix.mu = 10;
	tsmatrix.nu = 10;
	tsmatrix.tu = 5;

	Triple* ptr = tsmatrix.data;
	ptr++;

	tsmatrix.data[1].i = 1;tsmatrix.data[1].j = 1;tsmatrix.data[1].Element =1;
	tsmatrix.data[2].i = 2;tsmatrix.data[2].j = 8;tsmatrix.data[2].Element =2;
	tsmatrix.data[3].i = 3;tsmatrix.data[3].j = 5;tsmatrix.data[3].Element =3;
	tsmatrix.data[4].i = 3;tsmatrix.data[4].j = 7;tsmatrix.data[4].Element =4;
	tsmatrix.data[5].i = 4;tsmatrix.data[5].j = 4;tsmatrix.data[5].Element =5;
	tsmatrix.data[6].i = 5;tsmatrix.data[6].j = 2;tsmatrix.data[6].Element =6;

	TSMatrix T;
	TransposeMatrix(tsmatrix,T);

	Output(tsmatrix);
	cout<<"....................."<<endl;
	Output(T);

	/*
	for(int i = 1;i<=tsmatrix.tu;i++){
	cout<<"第"<<tsmatrix.data[i].i<<"行"<<"第"<<tsmatrix.data[i].j<<"列"<<"的元素是:"<<tsmatrix.data[i].Element<<endl;

	}
	*/

	system("pause");
	return 0;

}
发布了114 篇原创文章 · 获赞 28 · 访问量 4万+

猜你喜欢

转载自blog.csdn.net/ChaoFeiLi/article/details/103162931