C语言稀疏矩阵序列递增逆置算法
#include<stdio.h>
#include <stdlib.h>
#define MASXIZE 1000
typedef struct{
int row,col;
int e;
}Triple;
typedef struct{
Triple data[MASXIZE + 1];
int m,n,len;
}TSMatrix;
void TransposeMatrix(TSMatrix A,TSMatrix *B){
int i,j,k;
B->m = A.n;
B->n = A.m;
B->len = A.len;
if(B->len>0){
j = 1;
for(k = 1;k<=A.n;k++){
for(i = 1;i<=A.len;i++){
if(A.data[i].col == k){
B->data[j].row = A.data[i].col;
B->data[j].col = A.data[i].row;
B->data[j].e = A.data[i].e;
j++;
}
}
}
}
}
int main(){
TSMatrix A;
TSMatrix B;
A.m = 6;
A.n = 5;
A.len = 7;
A.data[1].row = 1;
A.data[1].col = 1;
A.data[1].e = 3;
A.data[2].row = 1;
A.data[2].col = 4;
A.data[2].e = 5;
A.data[3].row = 2;
A.data[3].col = 3;
A.data[3].e = -2;
A.data[4].row = 3;
A.data[4].col = 1;
A.data[4].e = 1;
A.data[5].row = 3;
A.data[5].col = 3;
A.data[5].e = 4;
A.data[6].row = 3;
A.data[6].col = 5;
A.data[6].e = 6;
A.data[7].row = 5;
A.data[7].col = 3;
A.data[7].e = -1;
printf("before reverse...........\n");
for(int i = 1;i<=A.len;i++){
printf("row: %d colume: %d value: %d\n",A.data[i].row,A.data[i].col,A.data[i].e);
}
printf("\n");
TransposeMatrix(A,&B);
printf("after reverse............\n");
for(int i = 1;i<=B.len;i++){
printf("row: %d colume: %d value: %d\n",B.data[i].row,B.data[i].col,B.data[i].e);
}
return 0;
}