num:矩陣a中某列的非零元素的個數
cpot:初值表示矩陣a中某列第乙個非零元素在b中的位置,並有如下遞推
cpot[1]=0; \\ cpot[col]=cpot[col-1]+num[col-1]; 2<=col<=nu \end\right.
;const
int maxterm =
100;
struct sparsematrix
;void
trans2
(sparsematrix &a, sparsematrix &b)
;void
(sparsematrix a)
;int
main()
,,,,
},5,
4,5}
; sparsematrix b;
trans2
(a, b)
(b);
return0;
}void
trans2
(sparsematrix &a, sparsematrix &b)
, cpot[maxterm]=;
b.mu = a.nu; b.nu = a.mu; b.tu = a.tu;
for(i =
0; i < a.tu; i++
) cpot[1]
=0;for
(i =
2; i <= a.nu; i++
) cpot[i]
= cpot[i -1]
+ num[i -1]
; cout<<
"num"
;for
(int i=
0;i) cout<
cout<<
"cpot"
<
for(
int i=
0;i) cout<
<<
" ";
cout<
for(i =
0; i < a.tu; i++)}
void
(sparsematrix a)
}根據上面**的例子進行解釋:
num為0,2,0,1,2
cpot為0,0,2,2,3
num的存在只是為了計算出cpot,這是累加法,每次計算完後cpot[j]++是因為如果第一列有兩個非零數,第乙個數字已經佔了b矩陣的第乙個,那麼第二個數字只能佔b矩陣的第二個。
稀疏矩陣轉置
輸出稀疏矩陣的轉置矩陣。行列均不大於20 第一行輸入兩個正整數n和m,分別表示矩陣的行數和列數,然後輸入矩陣三元組,最後輸入 0 0 0 表示結束輸入。轉置後的矩陣。include include define maxsize 100 typedef struct triple typedef st...
稀疏矩陣的轉置(矩陣轉置和快速轉置)
實現矩陣的轉置 1.將矩陣的行列值相互轉換。2.將每個三元組中的i和j交換。3.重排三元組之間的次序便可實現矩陣的轉置。void transposesmatrix tsmatrix m,tsmatrix t return transposesmatrix快速轉置的原理是 如果能預先確定矩陣m中每一列...
稀疏矩陣的轉置
稀疏矩陣的轉置 使用了兩個輔助陣列 num num j 矩陣a中第j列非零元素的個數 cpot cpot j 矩陣a中第j列的第乙個非零元素在其轉置矩陣b的三元組順序表的位置。推出2個規則 1 cpot 1 1 2 cpot j cpot j 1 num j 1 演算法思路 根據1,2規則計算num...