稀疏矩阵如何生成相应的三元组顺序表?

对C/C++数据结构中的稀疏矩阵,生成三元组顺序表的方法和注意事项,是什么?有无什么特例?

typedef struct
{
int i,j;
ElemType e;
}Triple;
typedef struct
{
Triple data[MAXSIZE+1];
int mu,nu,tu;
}TSMatrix;

int InitSMatrix(TSMatrix &M)
{
printf("请输入矩阵的行数:");
scanf("%d",&M.mu);
printf("列数:");
scanf("%d",&M.nu);
printf("非零元的个数:");
scanf("%d",&M.tu);
for(int t=1;t<=M.tu;t++) //data[0]不用
{
printf("第%d个非零元的行号:",t);
scanf("%d",&M.data[t].i);
printf("第%d个非零元的列号:",t);
scanf("%d",&M.data[t].j);
printf("第%d个非零元的元素值:",t);
scanf("%d",&M.data[t].e);
}
return OK;
}
温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-08-01
首先自己输入一个矩阵(这是比较麻烦的方法)或利用伪随机数产生一个稀疏矩阵(这是我用的方法)
然后利用循环对该矩阵进行扫描,将非零元素的行列值以及非零元素的值存入线性表。
第2个回答  2013-08-01
稀疏矩阵转制问题
生成一个三元组:
包括三个类别的书(横坐标、纵坐标、然后是值)
首先声明一个结构体,包括三组数据,如上三类。
struct
{int x;//横坐标<br/> int y;//纵坐标<br/> int dt;//数据<br/>}
然后是遍历稀疏矩阵
可以采用如下方法
int d,b;//声明两个变量d和b
for(d=0;d<N;d++) //解释该矩阵是N行M列
for(b=0;b<M;b++)
{
a[d][b]!=null;
x=d;
y=b;
dt=a[d][b];
}
大概就是这样了,你着急本书看看吧
相似回答