您的位置:首页 > 编程语言 > C语言/C++

c语言实现矩阵的三元组表示 + 矩阵的转置

2010-12-30 12:11 405 查看
 

 

 

 

 

#include<stdio.h>
#define MAXSIZE 30

typedef int ElemType;
typedef struct {
int i, j;
ElemType e;
}Triple;

typedef struct {
Triple data[MAXSIZE + 1];
int mu, nu, tu;
}TSMatrix;

void CreateTSMatrix(TSMatrix *T, int M[][7], int mu, int nu, int tu) {
T->mu = mu;
T->nu = nu;
T->tu = tu;
int q = 1;
for(int i=0; i<mu; i++)
for(int j=0; j<nu; j++) {
if(M[i][j]!=0) {
T->data[q].i = i;
T->data[q].j = j;
T->data[q].e = M[i][j];
q++;
}
}
}

void TransposeSMatrix(TSMatrix *M, TSMatrix *T) {
T->mu = M->nu;
T->nu = M->mu;
T->tu = M->tu;
if(T->tu) {
int q = 1;
for(int col=0; col<M->nu; col++)
for(int p=1; p<=M->tu; p++)
if(M->data[p].j==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;
q++;
}
}
}

void PrintTSMatrix(TSMatrix *T) {
printf("the triple matrix is: /n");
for(int i=0; i<T->tu; i++) {
printf("%d, %d, %d/n", T->data[i+1].i, T->data[i+1].j, T->data[i+1].e);
}
}

int main() {
int Matrix[][7] = {{0, 12, 9, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0},
{-3, 0, 0, 0, 0, 14, 0},
{0, 0, 24, 0, 0, 0, 0},
{0, 18, 0, 0, 0, 0, 0},
{15, 0, 0, -7, 0, 0, 0}};
TSMatrix M;
TSMatrix T;
CreateTSMatrix(&M, Matrix, 7, 6, 8);
PrintTSMatrix(&M);
TransposeSMatrix(&M, &T);
PrintTSMatrix(&T);
}
 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  语言 c matrix struct