稀疏矩阵和三元组的问题

来源:百度知道 编辑:UC知道 时间:2024/05/19 15:19:27
假设n x n的稀疏矩阵A采用三元组表示,编写一个程序如下功能:
(1)生成如下两个稀疏矩阵的三元组a和b;
1 0 3 0 3 0 0 0
0 1 0 0 0 4 0 0
0 0 1 0 0 0 1 0
0 0 1 1 0 0 0 2
(2)输出a转置矩阵的三元组。
(3)输出a+b的三元组。
(4)输出a X b的三元组。

#include<stdio.h>
#include<stdlib.h>

#define OK 1
#define ERROR 0
#define MAXSIZE 100 //最多非0元素的个数
#define MAXR 50 //rpos所能处理的最大行数
#define MAXC 50 //系数矩阵相乘时,保留临时列结果的数组temp[MAXC]
typedef struct NODE{ //定义稀疏矩阵结点
int i;
int j;
int data;
} Node;

typedef struct MATRIX{ //定义稀疏矩阵(可以快速访问)
int mu, nu, tu;
Node matrix[MAXSIZE+1];
int rpos[MAXR+1];
} Matrix;

int CreatSMatrix( Matrix* M ); //创建一个矩阵(由用户输入原始矩阵,转化为稀疏矩阵方式储存)
int AddSMatrix( Matrix M, Matrix N, Matrix *Q); //两个稀疏矩阵相加
int Print( Matrix M ); //打印一个稀疏矩阵
int Mul_SMatrix( Matrix M, Matrix N, Matrix *Q); //两个稀疏矩阵相乘
main()
{
Matrix A1, A2, A3; //定义矩阵
CreatSMatrix( &A1 );
CreatSMatrix( &A2 );
if( A1.mu==A2.mu && A1.nu==A2.nu ){ //判断能否相加
AddSMatrix( A1, A2, &A3 );
printf(&q