📄 稀疏矩阵.cpp
字号:
#include<iostream>
using namespace std;
#define MAXSIZE 12500
#define OK 1
#define ERROR 0
typedef int status;
typedef int Elemtype;
typedef struct{
int i,j;
Elemtype e;
}Triple;
typedef struct{
Triple data[MAXSIZE+1];
int mu,nu,tu;
}TSMatrix;
void printf(TSMatrix M)
{ cout<<"i"<<" "<<"j"<<" "<<"v"<<endl;
for(int s=1;s<=M.tu;s++)
{cout<<M.data[s].i<<" "<<M.data[s].j<<" "<<M.data[s].e<<endl;}
}
/*status TransposeSMatrix(TSMatrix M,TSMatrix &T)
{
T.mu=M.nu;T.nu=M.mu;T.tu=T.tu;
if(T.tu)
{int q=1;
for(int col=1;col<=M.nu;++col)
for(int p=1;p<=M.tu;++p)
if(M.data[p].j==col){
M.data[q].i=M.data[p].j;T.data[q].j=M.data[p].i;
T.data[q].e=M.data[p].e;++q;}
}
return OK;
}*/
status FsM(TSMatrix M,TSMatrix &T)
{int col,p,q=1;
T.mu=M.nu;T.nu=M.mu;T.tu=M.tu;
if(T.tu)
{ int num[M.nu],copt[M.nu];
for (col=1;col<=M.nu;++col) num[col]=0;
for(t=1;t<=M.tu;++t) ++num[M.data[t].j];
copt[1]=1;
for(col=2;col<=M.nu;++col) copt[col]=copt[col-1]+num[col-1];
for(p=1;p<=M.tu;++p){
col=M.data[p].j;q=copt[col];
T.data[q].i=M.data[p].j; T.data[q].j=M.data[p].i;
T.data[q].e=M.data[p].e; ++copt[col];
}
}return OK;
}
main()
{TSMatrix M,T;
int s,row,col;
Elemtype em;
cout<<"输入行总数mu 列总数nu 和非零元个数tu"<<endl;
cin>>M.mu>>M.nu>>M.tu;
for(s=1;s<=M.tu;s++)
{ cout<<"以行为主序输入行i 列 j 和值e"<<endl;
cin>>row>>col>>em;
M.data[row].i=row;
M.data[row].j=col;
M.data[row].e=em;
}
printf(M);
FSM(M,T);
printf(T);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -