读书人

稀疏矩阵三元组初学者有关问题

发布时间: 2012-10-20 14:12:47 作者: rapoo

稀疏矩阵三元组菜鸟问题
#include <stdio.h>
#include <stdlib.h>
#define MAX 1000
typedef int ElemType;

typedef struct
{
int row;
int col;
ElemType e;
}Tripe;

typedef struct
{
int mu,nu,tu;//行数。列数。非0数
Tripe data [MAX +1];
}TSMatri;
void createTSMatri(TSMatri & M)//18
{
printf("请输入行数");
scanf("%d",&M.mu);
printf("请输入列数");
scanf("%d",&M.nu);
printf("请输入矩阵非零数");
scanf("%d",&M.tu);

int i;
for(i = 1;i <= M.tu;i++)
{
printf("请输入第%d个非零值行号,列号,数值",i);
scanf("%d %d %d",&M.data[i].row,&M.data[i].col,&M.data[i].e);
}
}

void FastTransposeSMatrix(TSMatri M,TSMatri &T)//35
{
T.mu = M.nu;
T.nu = M.mu;
T.tu = T.tu;
int i,t,w ,q,p,j;

if(T.tu)
{
for(i = 1;i <= M.nu;i++)
num[i]=0//将每一个都赋值为0

for(t = 1;t <= M.tu;t++ )
num[M.data[t].col]++;//将每一个num[row]数数

pnum[1] = 1;
for(w = 2;w <= M.nu;w++ )
pnum[w] = pnum[w-1]+num[w-1];//统计每行第一个的位置

for(p = 1;p <= M.tu; p++)
{
j = M.data[p].col;//求出转置后的行数
q = pnum[j];//q是存储第三排的数
N.data[q].col = M.data[p].row;//存储到第q值
N.data[q].row = M.data[p].col;
N.data[q].e = M.data[p].e;
pnum[j]++;//是改变第三排的值
}
return OK;
}
}
void Output(TSMatri M)
{
int i,j;
int cnt = 1;
int e = 0;

for(i = 1; i <= M.mu; i++)
{
for(j = 1;j <= M.nu; i++)
{

if (i == M.data[cnt].row && j == M.data[cnt].col)
{
printf("%5d",M.data[cnt].e);
cnt ++;
}else
printf("%5d",e);

}
printf("\n");
}

}
void Print(TSMatri M)//输出三元组
{
int i;
printf("{");

for(i = 1; i <= M.tu; i++)
{
printf("%d %d %d",M.data[i].row,M.data[i].col,M.data[i].e);
}

printf("}");


}



int main()
{
TSMatri M,N;
createTSMatri(&M);
Output(M);
Print(M);
printf("\n");
FastTransposeSMatrix(M,&N);
Output(N);
Print(N);

return 0;
}
D:\数据结构\sanyuanzu\main.c:18: error: expected ';', ',' or ')' before '&' token
D:\数据结构\sanyuanzu\main.c:35: error: expected ';', ',' or ')' before '&' token
这是哪里错啦,根本就看不出来,感觉没错呀,用的是c语言,编译器是gcc,还有说是编译器的原因,我不是很懂,谢谢大神

[解决办法]

C/C++ code
void createTSMatri(TSMatri & M)//18
[解决办法]
稀疏矩阵原理给忘了 只能帮楼主去掉小错误

读书人网 >C语言

热点推荐