矩陣乘法
原始碼十字鍊錶
const
int max_size =
1000
;const
int max_size_of_row =
100;
typedef
struct
triple;
typedef
struct
rltmatrix;
//三元組順序表
rltmatrix
行列交換+重新排序
普通方法
按列查詢、放入
快速轉置
建立每列第乙個非零元對應的三元組順序表的行號的陣列,逐個遍歷三元組順序表放入相應位置。(類似於計數排序)
公式:m(i
,j)=
∑k=1
nl1(
i,k)
∗l2(
k,j)
m(i,j)=\sum_^nl1(i,k)*l2(k,j)
m(i,j)
=∑k=
1nl
1(i,
k)∗l
2(k,
j)( 1≤
i≤m1
,1≤j
≤n2)
(1\leq i \leq m_1 ,1\leq j \leq n_2)
(1≤i≤m
1,1
≤j≤n
2)
#include
#include
using
namespace std;
const
int max_size =
1000
;const
int max_size_of_row =
100;
typedef
struct
triple;
typedef
struct
rltmatrix;
//三元組順序表
rltmatrix creattmatrix
(int
** x,
int m,
int n)
//構建三元組形式的矩陣
t.rpos[0]
=0;for
(i =
1; i < m; i++
) t.rpos[i]
= t.rpos[i -1]
+ num[i -1]
;//獲得rpos
return t;
}void
printtmatrix
(rltmatrix t)
//列印三元組
rltmatrix fasttransposerltmatrix
(rltmatrix t)
//三元組矩陣快速轉置
for(i =
0; i < t.tu; i++
)return m;
}rltmatrix multrltmatrix
(rltmatrix t1, rltmatrix t2)
//三元組矩陣乘法
for(j=
0;j)//將結果壓縮到三元組矩陣內
if(temp[j])}
return m;
}int
main()
typedef
struct node node,
*link;
//十字鍊錶的乙個結點
typedef
struct
crosslist;
//十字鍊錶
void cr
#include
#include
using
namespace std;
typedef
struct node node,
*link;
//十字鍊錶的乙個結點
typedef
struct
crosslist;
//十字鍊錶
void
crosslistinsertnode
(crosslist& l, link& node)
//insert a new node into the crosslist
else
else
}//insert column
if(l.chead[j]
==null
|| l.chead[j]
->i < i)
else
l.tu++;}
crosslist creatcrosslist
(int
** x,
int m,
int n)
return l;
}crosslist addcrosslistmatrix
(crosslist l1, crosslist l2)
else
if(p1 ==
null
)else
else
p1 = p1-
>right;
p2 = p2-
>right;}}
}return l;
}void
printmatrix
(crosslist l)
}int
main()
矩陣壓縮儲存
在c中矩陣的表示是用二維陣列。那麼首先要搞清楚陣列行列與矩陣行列的對應。在c語言中二維陣列是按行儲存的。即順序儲存每一行。第一行,第二行。最後一行 看一下例子 陣列數量替換成arrs i j 方便說明。int arrs i j test 二維陣列記憶體位置 for i 0 i 3 i 在上例中i表示...
矩陣壓縮儲存
在c中矩陣的表示是用二維陣列。那麼首先要搞清楚陣列行列與矩陣行列的對應。在c語言中二維陣列是按行儲存的。即順序儲存每一行。第一行,第二行。最後一行 看一下例子 陣列數量替換成arrs i j 方便說明。int arrs i j test 二維陣列記憶體位置 for i 0 i 3 i 在上例中i表示...
矩陣壓縮儲存思路
為什麼矩陣要進行壓縮儲存?為了節省空間。我們對相同的元素或者零不再分配空間,把二維的矩陣壓縮存進一維陣列中 能進行壓縮儲存的矩陣稱為特殊矩陣 特殊矩陣主要包括 n階對稱矩陣 上三角矩陣 下三角矩陣 稀疏矩陣 n階對稱矩陣的條件如下 a i j a j i 1 i,j n 因為是把二維陣列存入一維陣列...