主题:请教“稀疏矩阵的存储和快速转置”
xyh119
[专家分:0] 发布于 2005-04-20 17:09:00
严蔚民版教材
题一:实现稀疏矩阵快速转置算法(教材算法5.2)。要求:输入一个矩阵,由程序将其转换成三元组表存储;转置后的三元组表,由程序将其转换成矩阵形式后输出。
题二:实现两个稀疏矩阵相乘算法(教材算法5.3)。
[em3]
是数据结构高手请回复!!急[em19][em19]
回复列表 (共2个回复)
沙发
caoxin [专家分:1540] 发布于 2005-05-01 06:17:00
#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]<<" ";
}
板凳
羅葉£繽紛 [专家分:0] 发布于 2005-10-29 19:05:00
有没有关于稀疏矩阵快速转置的C语言程序哦
我来回复