要求稀疏矩陣用三元組結構儲存,實現矩陣a+b=c,並採用矩陣形式顯示結果。
定義兩個結構體,triple結構體用來存放每乙個非零元素的資訊(行標,列標,數值),tripledata用來存放兩個三元組矩陣的資訊(行數,列數,非零元素的個數)。每乙個三元組結構都需要呼叫這兩個結構體,兩個結構體共同組成乙個稀疏矩陣的資訊。定義兩個二維陣列將所有元素賦值為0,然後再在非零元素位置進行賦值操作,輸出列印矩陣。最後用第三個陣列存放前兩個陣列相加的結果。
主函式:
列印矩陣
矩陣相加
實驗**:
#include
#include
typedef
struct threetupletriple;
//用來存放三元組中每乙個非零元素的資訊
typedef
struct infor
tripledata;
//用來存放三元組矩陣的資訊
void
printtuple
(triple m[
],tripledata n,
int a[n.col]
[n.row]);
void
add_print
(tripledata n,
int a[n.col]
[n.row]
,int b[n.col]
[n.row]);
intmain()
if(t[0]
.col!=t[1]
.col||t[0]
.row!=t[1]
.row)
int a,b;
a=t[0]
.counts;
b=t[1]
.counts;
triple t1[a]
,t2[b]
;//定義兩個非零元素資訊結構體,前者對應a,後者是b
printf
("請輸入每個三元組矩陣的非零元素的資訊:\n");
for(i=
1,j=
0;i<=t[0]
.counts;j++
,i++
)//每個三元組的資訊;
for(i=
1,j=
0;i<=t[0]
.counts;j++
,i++
)//每個三元組的資訊;
int a[t[0]
.col]
[t[0
].row]
;//定義乙個二維陣列來存放矩陣資訊
int b[t[1]
.col]
[t[1
].row]
;//同上
printf
("\na的矩陣形式:");
printtuple
(t1,t[0]
,a);
//以矩陣形式列印a
printf
("\nb的矩陣形式:");
printtuple
(t2,t[1]
,b);
//以矩陣形式列印b
add_print
(t[0
],a,b);//
return0;
}void
printtuple
(triple m[
],tripledata n,
int a[n.col]
[n.row]
)//以矩陣形式輸出兩個三元祖
稀疏矩陣 三元組表示的矩陣相加減
設有採用三元組順序表儲存的兩個稀疏矩陣m和n,試著編寫乙個演算法,實現m和n相乘 1.標頭檔案 triseqmatrix.h 該資料夾中包含著三元稀疏矩陣的建立 初始化 轉置 銷毀等操作 pragma once include include define maxsize 200 typedef s...
稀疏矩陣三元組表示法的倒置
稀疏矩陣的概念及三元組表示法 如果乙個矩陣中的很多元素的值為零,即零元素的個數遠遠大於非零元素的個數時,稱該矩陣為稀疏矩陣。由於矩陣中零元素過多,若用一般方法對稀疏矩陣進行儲存會造成空間的大大浪費,因此,我們在儲存稀疏矩陣的時候,只需要對非零元素進行儲存。三元組表示法實際上就是乙個二維陣列,即將稀疏...
三元組稀疏矩陣的相加和轉置
對於矩陣的加法運算,只有兩個 加數矩陣 為同型矩陣才能進行。兩個 同型矩陣相加,其 和矩陣 仍為同型矩陣,其各個位置上的值等於兩個 加數矩陣 對應位置的元素之和。include define maxsize 1000 typedef struct node triple typedef struct...