| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1029 人关注过本帖
标题:稀疏矩阵 每行第一个非零元的位置计算问题
取消只看楼主 加入收藏
Uni丶say
Rank: 1
等 级:新手上路
帖 子:5
专家分:6
注 册:2011-10-21
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:0 
稀疏矩阵 每行第一个非零元的位置计算问题
程序代码:
 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?
搜索更多相关主题的帖子: 矩阵 color 
2011-12-30 04:42
快速回复:稀疏矩阵 每行第一个非零元的位置计算问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.016974 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved