稀疏矩阵的存储方式,以及转换算法等

1)三元组顺序表存储矩阵元素方法

#define MAXSIZE 12500
typedef struct
{
      int i,j;
     ElemType e;
} Triple;
typedef struct
{
     vector<Triple*> data[MAXSIZE+1];
     int mu,nu,tu;
}TSMatrix;

 2)矩阵的转置算法

 

void matrix_turn(const TSMatrix& m1,TSMatrix& m2)
{
     vector<int> num(m1.nu,0);
     vector<int>col(m1.nu,0);
    for(int i=0;i<m1.tu;i++)
   {
        ++num[m1.data[i].j]//获得每一列存在多少个非零元素
   }
    for(int n=1;n<m1.nu;++n)
   {
        col[n]=col[n-1]+num[n-1];
   }
    for(int m=0;m<m1.tu;++m)
    {
           Triple* ptr=(Triple*)malloc(sizeof(Triple));
ptr->j=m1.data[m]->i;
ptr->i=m1.data[m]->j;
m2.data[col[ptr->j]]=ptr;
++col[ptr->j]; } }

  3)矩阵的十字链表存储方法

posted on 2015-08-02 16:00  菜鸟基地  阅读(169)  评论(0)    收藏  举报

导航