-
-
[旧帖]
[求助]关于稀疏矩阵的问题
0.00雪花
-
发表于:
2012-4-24 19:57
1272
-
[旧帖] [求助]关于稀疏矩阵的问题
0.00雪花
typedef struct
{
int col; //列
int row; //行
int value;
}term;
void transpose(term a[],term b[])
{
int n, i, j, currentb;
n = a[0].value;
b[0].row = a[0].col;
b[0].col = a[0].row;
b[0].value = n;
if(n>0) { //非零元矩阵
currentb = 1;
for( i = 0; i < a[0].col; i++ ) { //0-5 列
for( j = 1; j <= n; j++ ) { //1-8 元素总和
if( a[j].col == i ) { //如果a[j].col 等于 列值
b[currentb].row = a[j].col;
b[currentb].col = a[j].row;
b[currentb].value = a[j].value;
currentb++;
}
}
}
}
}
a[0].value 是元素总和
a[0].col 是列总和
a[0].row 是行总和
从a[1]之后开始就是存储稀疏矩阵的3元组
书上说 如果按照行下标来处理原矩阵 那么<j,i,value>在转置矩阵中的确切位置,在其前面的所有元素未处理完之前不能确定的。
如果在转置矩阵中存放这些元组,那么插入这些新元组时,就必须移动元素以维护正确的顺序,所以通过列下标来确定元素转置阵列的位置。
谁能跟我说一下 行和列到底有什么区别啊。。 我不理解
[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课