书上不是有吗?把我的给你看看,没关系,要下下礼拜才交
#include
using namespace std;
class matrix
{
public:
int data[100][100];
int m,n;
};
typedef int spmatrix[100][3];
void Init(matrix& mx);//稀疏矩阵初始化
void SpmDisplay(spmatrix spm);//显示三元组表示的矩阵
void Compressmatrix(matrix A,spmatrix B);//将稀疏矩阵转换为三元组矩阵
void Transpmatrix(spmatrix B,spmatrix& C);//将三元组矩阵转置
int main()
{
matrix mx;
spmatrix spm1,spm2;
//矩阵初始化
Init(mx);
//矩阵转为三元组
Compressmatrix(mx,spm1);
//显示三元组矩阵
SpmDisplay(spm1);
//将三元组转置存放到spm2中
Transpmatrix(spm1,spm2);
//显示转置后的三元组
SpmDisplay(spm2);
return 0;
}
void Init(matrix& mx)
{
cout<<"行数:";cin>>mx.m;cout<
for(int j=0;j!=mx.n;j++)
cin>>mx.data[i][j];
}
void SpmDisplay(spmatrix spm)
{
for(int x=0;x<=spm[0][2];x++)
for(int y=0;y<=2;y++)
{
static int z=0;
if(0==z%3)
cout<
cout<
cout<
void Compressmatrix(matrix A,spmatrix B)
{
int i,j,k=1;
for(i=0;i
{
B[k][0]=i;
B[k][1]=j;
B[k][2]=A.data[i][j];
k++;
}
B[0][0]=A.m;
B[0][1]=A.n;
B[0][2]=k-1;
cout<<"Compress complete!"<
void Transpmatrix(spmatrix B,spmatrix& C)
{
int i,j,t,m,n;
int x[100];
int y[100];
m=B[0][0];n=B[0][1];t=B[0][2];
C[0][0]=n;C[0][1]=m;C[0][2]=t;
if(t>0)
{
for(i=0;i
y[0]=1;
for(i=1;i
{
j=y[B[i][1]];
C[j][0]=B[i][1];
C[j][1]=B[i][0];
C[j][2]=B[i][2];
y[B[i][1]]=j+1;
}
}
cout<<"Transform complete!"<