第八周專案4 稀疏矩陣的三元組的實現與應用

2021-08-09 17:15:20 字數 1843 閱讀 1700

/*

* 檔名稱:cpp1.

* 作    者:劉思源

* 完成日期:2017 年 10 月 22 日

* 版 本 號:v1.0

** 問題描述:採用三元組儲存稀疏矩陣,設計兩個稀疏矩陣相加的運算演算法

提示1:兩個行數、列數相同的矩陣可以相加

提示2:充分利用已經建立好的演算法庫解決問題

提示3:教材例6.3已經給出兩個稀疏矩陣相加的運算的演算法,但未利用基本運算。請比較這兩種方案

* 輸入描述:無需輸入

* 程式輸出:實現各種演算法的函式的測試結果*/

解答一:

[cpp]view plain

copy

#include 

#include "tup.h"

bool

matadd(tsmatrix a,tsmatrix b,tsmatrix &c)  

return

true

;  }  

intmain()  

,  ,  

,  ,  

,    

};  

intb[m][n]=  

,  ,  

,  ,  

,    

};  

creatmat(ta,a);  

creatmat(tb,b);  

printf("a:\n"

);  

dispmat(ta);  

printf("b:\n"

);  

dispmat(tb);  

if(matadd(ta, tb, tc))  

else

return

0;  

}  

解答二:

[cpp]view plain

copy

#include 

#include "tup.h"

bool

matadd(tsmatrix a,tsmatrix b,tsmatrix &c)  

else

if(a.data[i].c>b.data[j].c)

//a元素的列號大於b元素的列號

else

//a元素的列號等於b元素的列號

i++;  

j++;  

}  }  

else

if(a.data[i].r//a元素的行號小於b元素的行號

else

//a元素的行號大於b元素的行號

c.nums=k;  

}  return

true

;  }  

intmain()  

,  ,  

,  ,  

,    

};  

intb[m][n]=  

,  ,  

,  ,  

,    

};  

creatmat(ta,a);  

creatmat(tb,b);  

printf("a:\n"

);  

dispmat(ta);  

printf("b:\n"

);  

dispmat(tb);  

if(matadd(ta, tb, tc))  

else

return

0;  

}  

執行結果:

第八周專案4 稀疏矩陣的三元組表示的實現及應用

檔名稱 cpp1.作 者 劉思源 完成日期 2017 年 10 月 22 日 版 本 號 v1.0 問題描述 建立稀疏矩陣三元組表示的演算法庫,包括 頭文tup.h,定義資料型別,宣告函式 原始檔tup.cpp,實現稀疏矩陣三元組表示的基本運算,主要演算法包括 void creatmat tsmat...

第八周 專案4 稀疏矩陣的三元組表示的實現及應用

define m 6 define n 7 define maxsize 100 矩陣中非零元素最多個數 typedef int elemtype typedef struct tupnode 三元組定義 typedef struct tsmatrix 三元組順序表定義 void creatmat ...

第八周專案3 稀疏矩陣的三元組表示的實現及應用

標頭檔案 tup.h ifndef tup h included define tup h included define m 6 define n 7 define maxsize 100 矩陣中非零元素最多個數 typedef int elemtype typedef struct tupnod...