读书人

小弟我做了个数据结构中的稀疏矩阵按列

发布时间: 2012-12-17 09:31:40 作者: rapoo

我做了个数据结构中的稀疏矩阵按列转置运算(c语言)感觉有问题啊,请大虾进来指点,在此感谢不已
#include <stdio.h>
#include <stdlib.h>

#define MAXNUM 100

struct node
{
int i,j;
int v;
};

struct sqarmatrix
{
int rows ,cols ;
int terms;
struct node data[MAXNUM];
};


void transpose(struct sparmatrix a)
{
struct sparmatrix b;

int col;
int ano;
int bno=0;
int i;

b.rows = a.cols;
b.cols = a.rows;
b.terms = a.terms;
if(b.terms>0)
{
for(col=0;col<a.cols;col++)
for(ano=0;ano<a.terms;ano++)
if(a.data[ano].j == col)
{
b.data[bno].j = a.data[ano].i;
b.data[bno].v = a.data[ano].v;
bno++;
}
}
//输出转置后的三元组的结果
for (i=0;i<b.terms;i++)
{
printf("%5d%5d%5d\n",b.data[i].i,b.data[i].j,b.data[i].v);
}
}

void main ()
{
int i ;
struct sparmatrix a;

printf("请输入行rows,列cols,和非零元的个数terms :\n");
scanf("%d%d%d",a.rows,a.cols,a.terms);

printf("转置前的稀疏矩阵行列和非零元的个数为:\n");
for(i=0;i<a.terms;i++)
{
scanf("%d%d%d",&a.data[i].i,&a.data[i].j,&a.data[i].v);
}

printf("输出转置后的结果:\n");
for (i=0;i<a.terms;i++)
{
printf("%5d%5d%5d\n",a.data[i].i,a.data[i].j,a.data[i].v);
}

transpose(a);
}

读书人网 >C语言

热点推荐