#include<string.h>
#include <iostream>
using namespace std;
#define OK 1
#define ERROR 0
#define MAXSIZE 100 //最多非0元素的个数
#define MAXR 50 //rpos所能处理的最大行数
#define MAXC 50
class Tsmatrix { //定义稀疏矩阵类
private:
int mu;
int nu;
int tu;
int rops[MAXC+1];
struct Triple { //定义稀疏矩阵结点
int i;
int j;
int data;
}data[MAXSIZE+1];
public:
Tsmatrix(int a,int b,int c ); //定义带参数的构造函数
Tsmatrix( ); //定义无参数的构造函数
~Tsmatrix( ); //定义析构函数
void Print( Tsmatrix M );//稀疏矩阵的输出
void TransposeSMatrix(Tsmatrix M,Tsmatrix * T);//稀疏矩阵的转置函数
int MulTsmatrix( Tsmatrix M, Tsmatrix N, Tsmatrix &Q);//稀疏矩阵的乘法
void AddTsmatrix( Tsmatrix M, Tsmatrix N, Tsmatrix *Q );//稀疏矩阵的加法
};
Tsmatrix::Tsmatrix(int a,int b,int c ){//带参数的构造函数的实现
mu=a;nu=b;tu=c;
}
Tsmatrix::Tsmatrix( ){ //无参构造函数的实现
int i,k;
cout<<"输入稀疏矩阵的行数和列数及非零元的个数 ";
cin>>mu>>nu>>tu;
for(i=1;i<=tu;i++)
{
cout<<"请用三元组形式输入矩阵的元素(行 列 非零元素):";
cin>>data[i].i>>data[i].j>>data[i].data;
cout<<endl;
}
for(i=1,k=1;i<=mu;i++)
{
rops[i]=k;
while(data[k].i<=i && k<=tu)
k++;
}
}
Tsmatrix::~Tsmatrix( ){ //析构空函数
}
void Tsmatrix:: Print( Tsmatrix M ) //输出函数
{for(int i =1;i<=M.tu;i++)
cout<<M.data[i].i<<" "<<M.data[i].j<<" "<<M.data[i].data<<endl;
}
void Tsmatrix:: TransposeSMatrix(Tsmatrix M,Tsmatrix * T) //矩阵转置
{