📄 l5_1.cpp
字号:
//稀疏矩阵的转置
#include <iostream.h>
const int maxsize=100;
struct node //定义一个三元组
{
int i , j; //非零元行、列号
int v; //非零元值
};
struct sparmatrix //定义稀疏矩阵
{
int rows,cols ; //稀疏矩阵行\列数
int terms; //稀疏矩阵非零元个数
node data [maxsize]; //三元组表
};
void transpose(sparmatrix a,sparmatrix b)
{
b.rows=a.cols; b.cols=a.rows;
b.terms=a.terms;
if (b.terms>0)
{int bno=0;
for (int col=0; col<a.cols; col++)
for(int ano=0;ano<a.terms;ano++)
if (a.data[ano].j==col)
{ b.data[bno].j=a.data[ano].i;
b.data[bno].i=a.data[ano].j;
b.data[bno].v=a.data[ano].v;
bno++;
}
}
cout<<"输出转置后的三元组表"<<endl;
for(int i=0;i<a.terms;i++)
cout<<b.data[i].i<<" "<<b.data[i].j<<" "<<b.data[i].v<<endl;
}
void main()
{ sparmatrix a,b;
cout<<"请输入稀疏矩阵的行、列数及非零元的个数:"<<endl;
cin>>a.rows>>a.cols>>a.terms;
for( int i=0;i<a.terms;i++)
{ cout<<"请输入一个三元组"<<endl;
cin>>a.data[i].i>>a.data[i].j>>a.data[i].v;}
cout<<"输出转置前的三元组表"<<endl;
for(i=0;i<a.terms;i++)
cout<<a.data[i].i<<" "<<a.data[i].j<<" "<<a.data[i].v<<endl;
transpose( a,b);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -