请各位帮帮忙,看一下这个是什么意思
#include <iostream>#define MAXSIZE 100
#define OK 1
#define ERROR 0
using namespace std;
typedef int ElemType;
typedef struct{
int i,j; //矩阵的行下标及列下标
ElemType e;
}Triple;
typedef struct{
Triple data[MAXSIZE+1]; //三元组表
int mu,nu,tu; //矩阵的行数列数及非零元个数
}TSMatrix;
int CreateSMatrix(TSMatrix &M) //创建矩阵
{
cout<<"请输入稀疏矩阵的行数、列数和非零元个数:"<<endl;
cin>>M.mu>>M.nu>>M.tu;
if((M.mu<=0)||(M.nu<=0)||(M.tu<=0)||(M.tu>M.mu*M.nu)) //判断行值、列值、元素个数是否合法
return ERROR;
for(int i=1;i<=M.tu;i++)
{
cout<<"请输入元素坐标及数值:"<<endl;
cin>>M.data[i].i>>M.data[i].j>>M.data[i].e;
if((M.data[i].i<=0)||(M.data[i].j<=0)) //控制行、列符合要求
{
cout<<"输入错误,请重新输入"<<endl;
cin>>M.data[i].i>>M.data[i].j>>M.data[i].e;
}
}
return OK;
}
int DisplaySMatrix(TSMatrix &M) //输出矩阵
{
int n=0;
for(int i=1;i<=M.mu;i++)
{
for(int j=1;j<=M.nu;j++)
{
if(M.data[n].i==i&&M.data[n].j==j)
{
cout<<M.data[n].e<<" ";
n++;
}
else
{
cout<<"0"<<" ";
}
}
cout<<endl;
}
cout<<endl;
return OK;
}
int AddSMatrix(TSMatrix M,TSMatrix N,TSMatrix &Q)//矩阵相加
{
int i=0,j=0,k=0;
while(i<M.tu&&j<N.tu)
{
switch(CompareTriple( M.data[i], N.data[j]))//这个CompareTriple实现的是什么功能啊 {
case -1:Q.data[k++]=M.data[i++];
break;
case 1:Q.data[k++]=N.data[j++];
break;
default:Q.data[k]=M.data[i];
Q.data[k].e+=N.data[j].e;
if(Q.data[k].e!=0)
k++;
i++;
j++;
break;
}
}
while(i<M.tu) Q.data[k++]=M.data[i++];
while(j<N.tu) Q.data[k++]=N.data[j++];
Q.tu=k;
return OK;
}
int main()
{
TSMatrix M,N,T,Q;
CreateSMatrix(M);
cout<<"矩阵M:"<<endl;
DisplaySMatrix(M);
CreateSMatrix(N);
cout<<"矩阵N:"<<endl;
DisplaySMatrix(N);
AddSMatrix(M,N,Q);
cout<<"矩阵M+N:"<<endl;
DisplaySMatrix(Q);
return OK;
}