用三元组表实现稀疏矩阵的转置运算二、实验内容1、问题描述:定义一个5行3列的稀疏矩阵{{0,5,0},{6,0,0},{0,9,0},{0,3,7},{8,0,0}};2、 基本要求 :(1) 、采用三元组顺序表存储表示;(2) 、显示上述
来源:学生作业帮助网 编辑:作业帮 时间:2024/07/11 07:31:15
![用三元组表实现稀疏矩阵的转置运算二、实验内容1、问题描述:定义一个5行3列的稀疏矩阵{{0,5,0},{6,0,0},{0,9,0},{0,3,7},{8,0,0}};2、 基本要求 :(1) 、采用三元组顺序表存储表示;(2) 、显示上述](/uploads/image/z/12649242-66-2.jpg?t=%E7%94%A8%E4%B8%89%E5%85%83%E7%BB%84%E8%A1%A8%E5%AE%9E%E7%8E%B0%E7%A8%80%E7%96%8F%E7%9F%A9%E9%98%B5%E7%9A%84%E8%BD%AC%E7%BD%AE%E8%BF%90%E7%AE%97%E4%BA%8C%E3%80%81%E5%AE%9E%E9%AA%8C%E5%86%85%E5%AE%B91%E3%80%81%E9%97%AE%E9%A2%98%E6%8F%8F%E8%BF%B0%EF%BC%9A%E5%AE%9A%E4%B9%89%E4%B8%80%E4%B8%AA5%E8%A1%8C3%E5%88%97%E7%9A%84%E7%A8%80%E7%96%8F%E7%9F%A9%E9%98%B5%7B%7B0%2C5%2C0%7D%2C%7B6%2C0%2C0%7D%2C%7B0%2C9%2C0%7D%2C%7B0%2C3%2C7%7D%2C%7B8%2C0%2C0%7D%7D%3B2%E3%80%81+%E5%9F%BA%E6%9C%AC%E8%A6%81%E6%B1%82+%EF%BC%9A%EF%BC%881%29+%E3%80%81%E9%87%87%E7%94%A8%E4%B8%89%E5%85%83%E7%BB%84%E9%A1%BA%E5%BA%8F%E8%A1%A8%E5%AD%98%E5%82%A8%E8%A1%A8%E7%A4%BA%EF%BC%9B%282%29+%E3%80%81%E6%98%BE%E7%A4%BA%E4%B8%8A%E8%BF%B0)
用三元组表实现稀疏矩阵的转置运算二、实验内容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;
}