| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 497 人关注过本帖
标题:[求助]关于数组的编程~
只看楼主 加入收藏
HaseoDG
Rank: 1
等 级:新手上路
帖 子:10
专家分:0
注 册:2006-11-2
收藏
 问题点数:0 回复次数:3 
[求助]关于数组的编程~

1.编写程序,实现利用三元组表进行两个稀疏矩阵相加的算法。

要求:(1)随机产生两个可相加的稀疏矩阵(二维);

(2)将产生的稀疏矩阵用两个三元组表的顺序存储结构存储;

(3)将两稀疏矩阵相加的结果存储在第三个三元组表中。


2006-11-02 00:54
unicorn
Rank: 4
等 级:贵宾
威 望:14
帖 子:1066
专家分:0
注 册:2005-10-25
收藏
得分:0 

三元组的问题还去数据结构区 看看吧


unicorn-h.spaces. ◇◆ sava-scratch.spaces.  noh enol ! pue pu!w hw u! shemle aq ll!m noh 
2006-11-02 10:37
HaseoDG
Rank: 1
等 级:新手上路
帖 子:10
专家分:0
注 册:2006-11-2
收藏
得分:0 

算法自己也知道~但怎样编程啊~
#define MaxSize 10 //用户自定义
  typedef int DataType; //用户自定义
  typedef struct
   { //定义三元组
    int i,j;
    DataType v;
   }TriTupleNode;

  typedef struct
   { //定义三元组表
    TriTupleNode data[MaxSize];
    int m,n,t;//矩阵行,列及三元组表长度
   }TriTupleTable;

  //以下为矩阵加算法
  void AddTriTuple( TriTupleTable *A, TriTupleTable *B, TriTupleTable *C)
   {//三元组表表示的稀疏矩阵A,B相加
    int k,l;
    DataType temp;
    C->m=A->m;//矩阵行数
    C->n=A->n;//矩阵列数
    C->t=0; //三元组表长度
    k=0; l=0;
    while (k<A->t&&l<B->t)
     {if((A->data[k].i==B->data[l].i)&&(A->data[k].j==B->data[l].j))
       {temp=A->data[k].v+B->data[l].v;
        if (!temp)//相加不为零,加入C
         {C->data[c->t].i=A->data[k].i;
          C->data[c->t].j=A->data[k].j;
          C->data[c->t++].v=temp;
         }
        k++;l++; 
       }
     if ((A->data[k].i==B->data[l].i)&&(A->data[k].j<B->data[l].j))
       ||(A->data[k].i<B->data[l].i)//将A中三元组加入C
      {C->data[c->t].i=A->data[k].i;
       C->data[c->t].j=A->data[k].j;
       C->data[c->t++].v=A->data[k].v;
       k++;
      }
     if ((A->data[k].i==B->data[l].i)&&(A->data[k].j>B->data[l].j))
       ||(A->data[k].i>B->data[l].i)//将B中三元组加入C
      {C->data[c->t].i=B->data[l].i;
       C->data[c->t].j=B->data[l].j;
       C->data[c->t++].v=B->data[l].v;
       l++; 
      }
     }
    while (k<A->t)//将A中剩余三元组加入C
     {C->data[c->t].i=A->data[k].i;
      C->data[c->t].j=A->data[k].j;
      C->data[c->t++].v=A->data[k].v;
      k++;
     }
    while (l<B->t)//将B中剩余三元组加入C
     {C->data[c->t].i=B->data[l].i;
      C->data[c->t].j=B->data[l].j;
      C->data[c->t++].v=B->data[l].v;
      l++;
     }
   }

2006-11-02 12:02
HaseoDG
Rank: 1
等 级:新手上路
帖 子:10
专家分:0
注 册:2006-11-2
收藏
得分:0 
以下是引用unicorn在2006-11-2 10:37:26的发言:

三元组的问题还去数据结构区 看看吧

已经去了~
希望有人能做到啦~

2006-11-02 12:03
快速回复:[求助]关于数组的编程~
数据加载中...
 
   



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

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