关于C++方面的数据结构中的矩阵转置方面的代码
#include<iostream>
using namespace std;
typedef struct{
int i,j; //非零元素的行下标和列下标
int e; //非零元素
}node;
typedef struct{
int mu,nu,tu;//矩阵的行数、列数、和非零元素个数
node data[10][10]; //行数最大为10,列数最大为10
}TSMatrix;
bool Creat_Matrix(TSMatrix &a,int Row_num,int Line_num){ //创建矩阵,行数为 Row_num,列数为Line_num
if(Row_num>10||Line_num>10){
cout<<"创建失败";
return false;
}
else{
a.mu=Row_num;a.nu=Line_num;
for(int row=1;row<=a.mu;row++){
for(int line=1;line<=a.nu;line++){
a.data[row][line].i=row;
a.data[row][line].j=line;
}
}
return true;
}
}
void In_Matrix(TSMatrix &a){ //在矩阵中输入元素
cout<<"请输入矩阵元素";
for(int row=1;row<=a.mu;row++){
for(int line=1;line<=a.nu;line++){
cin>>a.data[row][line].e;
}
}
}
void Out_Matrix(TSMatrix a){ //输出矩阵
for(int row=1;row<=a.mu;row++){
for(int line=1;line<=a.nu;line++){
cout<<a.data[row][line].e<<" ";
}
cout<<endl;
}
}
void Trans_Matrix(TSMatrix a,TSMatrix &b){ //将a矩阵转置,存储到b矩阵
b.mu=a.nu;b.nu=a.mu;
for(int row=1;row<=a.nu;row++){
for(int line=1;line<=a.mu;line++){
b.data[row][line].e=a.data[line][row].e;
b.data[row][line].i=a.data[line][row].j;
b.data[row][line].j=a.data[line][row].i;
}
}
}
void Find_Element(int num,TSMatrix a){ //遍历矩阵,在矩阵a中寻找元素num
for(int row=1;row<=a.mu;row++){
for(int line=1;line<=a.nu;line++){
if(a.data[row][line].e==num){
cout<<"这个数在第"<<row<<"行"<<"第"<<line<<"列"<<endl;
}
}
}
}
void Martix_Multiply (TSMatrix a,TSMatrix b,TSMatrix &s){ //矩阵的乘法
s.mu=a.mu;s.nu=b.nu;
for(int i=1;i<=a.mu;i++){
for(int j=1;j<=b.nu;j++){
s.data[i][j].e=0;
for(int k=1;k<=a.nu;k++){
s.data[i][j].e+=a.data[i][k].e*b.data[k][j].e;
}
}
}
}
int main(){
TSMatrix a;
TSMatrix b;
int row_num,line_num;
int select;
int find;
cout<<"请输入矩阵的行数和列数";
cin>>row_num>>line_num;
if(Creat_Matrix(a,row_num,line_num)==false)return 0; //判断是否创建矩阵成功,失败就结束程序
In_Matrix(a);
cout<<"矩阵为"<<endl;
Out_Matrix(a);
cout<<"转置后的矩阵为"<<endl;
Creat_Matrix(b,line_num,row_num);
Trans_Matrix(a,b);
Out_Matrix(b);
cout<<"请输入你想在那个矩阵查找矩阵(1为转置前的矩阵,2是转置后的矩阵)";
cin>>select;
if(select==1){
cout<<"请输入你想在要查找的元素:";
cin>>find;
Find_Element(find,a);
}
if(select==2){
cout<<"请输入你想在要查找的元素:";
cin>>find;
Find_Element(find,b);
}
TSMatrix c;
cout<<"转置矩阵和矩阵相乘后的矩阵为:"<<endl;
Martix_Multiply(a,b,c);
Out_Matrix(c);
return 0;
}