回 帖 发 新 帖 刷新版面

主题:请教“稀疏矩阵的存储和快速转置”

严蔚民版教材

题一:实现稀疏矩阵快速转置算法(教材算法5.2)。要求:输入一个矩阵,由程序将其转换成三元组表存储;转置后的三元组表,由程序将其转换成矩阵形式后输出。
题二:实现两个稀疏矩阵相乘算法(教材算法5.3)。
[em3]

是数据结构高手请回复!!急[em19][em19]

回复列表 (共2个回复)

沙发

#include<iostream.h>

typedef tagNODE
{
int line;
int row;
int var;
}NODE;

typedef tagMATRIX
{
int size;
NODE *pN;
}MATRIX;

void main()
{
int a[][5] = {{ 0,4,0,0,6},
               { 0,0,0,0,19},
               {55,0,0,0,0},
               { 9,0,0,0,0}};
int n=0, k=0;

for(int i=0,j; i<4; i++)
    for(j=0; j<5; j++)
      if(a[i][j]) n++;

NODE *p = new NODE[n] ;

   for(i=0,j; i<4; i++)
     for(j=0; j<5; j++)
       if(a[i][j])
          {
            p[k].line = i;
            p[k].row  = j;
            p[k].var  = a[i][j];
            k++;
           }

MATRIX matrix;
matrix.size = n;
matrix.pN   = p;

//输出:
int b[4][5]={0};  
for(i=0; i<n; i++)
  b[matrix.pN[i].line][matrix.pN[i].row] = matrix.var;

for(i=0; i<4;i++)
    for(j=0; j<5; j++)
     cout<<b[i][j]<<" ";
}

板凳

有没有关于稀疏矩阵快速转置的C语言程序哦

我来回复

您尚未登录,请登录后再回复。点此登录或注册