稀疏矩阵 每行第一个非零元的位置计算问题
程序代码:
Status CreateSMatrix(RLSMatrix *M) { /* 创建稀疏矩阵M */ int i; Triple T; Status k; printf("请输入矩阵的行数,列数,非零元素数:"); scanf("%d,%d,%d",&(*M).mu,&(*M).nu,&(*M).tu); (*M).data[0].i=0; /* 为以下比较做准备 */ for(i=1;i<=(*M).tu;i++) { do { printf("请按行序顺序输入第%d个非零元素所在的行(1~%d),列(1~%d),元素值:",i,(*M).mu,(*M).nu); scanf("%d,%d,%d",&T.i,&T.j,&T.e); k=0; if(T.i<1||T.i>(*M).mu||T.j<1||T.j>(*M).nu) /* 行、列超出范围 */ k=1; if(T.i<(*M).data[i-1].i||T.i==(*M).data[i-1].i&&T.j<=(*M).data[i-1].j) /* 没有按顺序输入非零元素 */ k=1; }while(k); /* 当输入有误,重新输入 */ (*M).data[i]=T; } for(i=1;i<=(*M).tu;i++) /* 计算rpos[] */ if((*M).data[i].i>(*M).data[i-1].i) for(T.i=0;T.i<(*M).data[i].i-(*M).data[i-1].i;T.i++) (*M).rpos[(*M).data[i].i-T.i]=i; for(i=(*M).data[(*M).tu].i+1;i<=(*M).mu;i++) /* 给最后没有非零元素的几行赋值 */ (*M).rpos[i]=(*M).tu+1; return OK; }rpos数组存放每行第一个非零元的位置
计算rpos[]这个过程看不懂
还想问一下 最后给没有非零元的行赋值 可不可以都设置成0?