首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

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

2012-10-20 
稀疏矩阵三元组菜鸟问题#include stdio.h#include stdlib.h#define MAX 1000typedef int ElemTypetyp

稀疏矩阵三元组菜鸟问题
#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
[解决办法]
稀疏矩阵原理给忘了 只能帮楼主去掉小错误

热点排行