用三元组表实现稀疏矩阵的转置运算二、实验内容1、问题描述:定义一个5行3列的稀疏矩阵{{0,5,0},{6,0,0},{0,9,0},{0,3,7},{8,0,0}};2、 基本要求 :(1) 、采用三元组顺序表存储表示;(2) 、显示上述
来源:学生作业帮助网 编辑:六六作业网 时间:2024/11/21 20:00:22
用三元组表实现稀疏矩阵的转置运算二、实验内容1、问题描述:定义一个5行3列的稀疏矩阵{{0,5,0},{6,0,0},{0,9,0},{0,3,7},{8,0,0}};2、 基本要求 :(1) 、采用三元组顺序表存储表示;(2) 、显示上述
用三元组表实现稀疏矩阵的转置运算
二、实验内容
1、问题描述:定义一个5行3列的稀疏矩阵{{0,5,0},{6,0,0},{0,9,0},{0,3,7},{8,0,0}};
2、 基本要求 :
(1) 、采用三元组顺序表存储表示;
(2) 、显示上述稀疏矩阵的三元组表;
(3) 、对上述稀疏矩阵进行转置运算;
(4) 、显示稀疏矩阵转置 后的三元组表;
用三元组表实现稀疏矩阵的转置运算二、实验内容1、问题描述:定义一个5行3列的稀疏矩阵{{0,5,0},{6,0,0},{0,9,0},{0,3,7},{8,0,0}};2、 基本要求 :(1) 、采用三元组顺序表存储表示;(2) 、显示上述
书上不是有吗?把我的给你看看,没关系,要下下礼拜才交
#include<iostream>
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<<endl;
cout<<"列数:";cin>>mx.n;cout<<endl;
cout<<"输入矩阵:"<<endl;
for(int i=0;i!=mx.m;i++)
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<<endl;
z++;
cout<<spm[x][y]<<' ';
}
cout<<endl;
}
void Compressmatrix(matrix A,spmatrix B)
{
int i,j,k=1;
for(i=0;i<A.m;i++)
for(j=0;j<A.n;j++)
if(A.data[i][j]!=0)
{
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!"<<endl;
}
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<n;i++) x[i]=0;
for(i=1;i<=t;i++) x[B[i][1]]=x[B[i][1]]+1;
y[0]=1;
for(i=1;i<n;i++) y[i]=y[i-1]+x[i-1];
for(i=1;i<=t;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!"<<endl;
}