OneCompiler

Sparse matrix

111

#include<stdio.h>
typedef struct term{
int row,col,val;
} term;
int main(){
int i;
term sparseA[101],transp[101];
printf("Enter total rows. total cols and count of non-zero values\n");
scanf("%d\n%d \n%d",&sparseA[0].row,&sparseA[0].col,&sparseA[0].val);
transp[0].row=sparseA[0].row;
transp[0].col=sparseA[0].col;
transp[0].val=sparseA[0].val;
for(i=1;i<=sparseA[0].val;i++){
printf("Row: ");
scanf("%d",&sparseA[i].row);
printf("Column: ");
scanf("%d",&sparseA[i].col);
printf("Value: ");
scanf("%d",&sparseA[i].val);
}
int rowterm[sparseA[0].col] ,starting_index[sparseA[0].col];
for(i=0;i<=sparseA[0].col;i++){
rowterm[i]=0;
}
for(i=1;i<=sparseA[0].val;i++){
rowterm[sparseA[i].col]++;
}
starting_index[0]=1;
for(i=1;i<=sparseA[0].val;i++){
starting_index[i]=starting_index[i-1]+rowterm[i-1];
}
for(i=1;i<=sparseA[0].val;i++){
transp[starting_index[sparseA[i].col]].row=sparseA[i].col;
transp[starting_index[sparseA[i].col]].col=sparseA[i].row;
transp[starting_index[sparseA[i].col]].val=sparseA[i].val;
starting_index[sparseA[i].col]++;
}
printf("Fast Transpose of the Sparse Matrix:\n");
printf("Row Column Value\n");
for(i=1;i<=sparseA[0].val;i++){
printf("%d\t",transp[i].row);
printf("%d\t",transp[i].col);
printf("%d\n",transp[i].val);
}
}