#include <stdio.h>
#define MAX_SIZE 20
#define MAXR 10
typedef int ElemType;
typedef struct Triple
{
int i;
int j;
ElemType e;
}Triple;
typedef struct SparseMatrix
{
Triple data[MAX_SIZE];
int rpos[MAXR+1];
int mu, nu, tu;
}SM;
void CreateSM(SM* M, int mu, int nu, int tu)
{
M->mu = mu;
M->nu = nu;
M->tu = tu;
M->data[0].i = 1;
M->data[0].j = 2;
M->data[0].e = 12;
M->data[1].i = 1;
M->data[1].j = 3;
M->data[1].e = 9;
M->data[2].i = 3;
M->data[2].j = 1;
M->data[2].e = -3;
M->data[3].i = 3;
M->data[3].j = 6;
M->data[3].e = 14;
M->data[4].i = 4;
M->data[4].j = 3;
M->data[4].e = 24;
M->data[5].i = 5;
M->data[5].j = 2;
M->data[5].e = 18;
M->data[6].i = 6;
M->data[6].j = 1;
M->data[6].e = 15;
M->data[7].i = 6;
M->data[7].j = 4;
M->data[7].e = -7;
}
void TransposeMatrix(SM* M, SM* N)
{
N->mu = M->nu;
N->nu = M->mu;
N->tu = M->tu;
int q = 0;
#define MAX_SIZE 20
#define MAXR 10
typedef int ElemType;
typedef struct Triple
{
int i;
int j;
ElemType e;
}Triple;
typedef struct SparseMatrix
{
Triple data[MAX_SIZE];
int rpos[MAXR+1];
int mu, nu, tu;
}SM;
void CreateSM(SM* M, int mu, int nu, int tu)
{
M->mu = mu;
M->nu = nu;
M->tu = tu;
M->data[0].i = 1;
M->data[0].j = 2;
M->data[0].e = 12;
M->data[1].i = 1;
M->data[1].j = 3;
M->data[1].e = 9;
M->data[2].i = 3;
M->data[2].j = 1;
M->data[2].e = -3;
M->data[3].i = 3;
M->data[3].j = 6;
M->data[3].e = 14;
M->data[4].i = 4;
M->data[4].j = 3;
M->data[4].e = 24;
M->data[5].i = 5;
M->data[5].j = 2;
M->data[5].e = 18;
M->data[6].i = 6;
M->data[6].j = 1;
M->data[6].e = 15;
M->data[7].i = 6;
M->data[7].j = 4;
M->data[7].e = -7;
}
void TransposeMatrix(SM* M, SM* N)
{
N->mu = M->nu;
N->nu = M->mu;
N->tu = M->tu;
int q = 0;

本文介绍了如何创建和操作稀疏矩阵,包括创建稀疏矩阵的结构体、矩阵转置以及矩阵乘法。提供了C语言实现的示例代码,展示了如何通过结构体存储稀疏矩阵,并实现了矩阵的快速转置和乘法操作。
最低0.47元/天 解锁文章
1662

被折叠的 条评论
为什么被折叠?



