三元組表示稀疏矩陣並相加

2021-10-07 12:59:19 字數 2393 閱讀 9989

要求稀疏矩陣用三元組結構儲存,實現矩陣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...