#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;
}
数据结构——三元组顺序表以及矩阵转置
猜你喜欢
转载自blog.csdn.net/ChaoFeiLi/article/details/103162931
今日推荐
周排行