矩陣壓縮儲存

2021-09-27 23:33:26 字數 2760 閱讀 5907

矩陣乘法

原始碼十字鍊錶

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=

1n​l

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 因為是把二維陣列存入一維陣列...