实验五数组及其应用
1.(必做题) 设计并实现稀疏矩阵运算器。
(1) 以三元组顺序表存储稀疏矩阵,实现两个矩阵的相加、相减与转置。
(2) 根据屏幕菜单的选择,可以进行稀疏矩阵的相加、相减与转置,且能进行输入数据出错的处理,例如参与相加运算的两个矩阵行数和列数不同,等等。
(3) 矩阵的输入、输出均为矩阵形式。
#include<stdio.h>
#define MAXSIZE 10000
typedef struct{
int i,j,e; //行下表和列下标
}Triple;
typedef struct{
Triple data[MAXSIZE+1];
int mu,nu,tu; //矩阵的行数,列数和非零元个数
}TSMatrix;
int FastTransposeSMatrix(TSMatrix M,TSMatrix &T) //快速转置
{
//采用三元组顺序表存储表示,求稀疏矩阵M的转置矩阵T
int num[20];
int cpot[20];
int col,p,q;
T.mu=M.mu;
T.nu=M.nu;
T.tu=M.tu;
if(T.tu){
for(col=1;col<=M.nu;++col) //初始化num[]
num[col]=0;
for(int t=1;t<=M.tu;++t)
++num[M.data[t].j]; //求M中每一列含非零元的个数
cpot[1]=1;
for(col=2;col<=M.nu;++col)
cpot[col]=cpot[col-1]+num[col-1];
for(p=1;p<=M.tu;++p)
{
col=M.data[p].j;
q=cpot[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;
++cpot[col];
}
}
}
int TSMatrix_Add(TSMatrix A,TSMatrix B,TSMatrix &C)//稀疏矩阵加法
{
C.mu=A.mu;
C.nu=A.nu;
C.tu=0;
int ce;
int pa=1;
int pb=1;
int pc=1;
if(A.mu != B.mu || A