第九周上機實踐 專案3(2) 兩個稀疏矩陣相加

2021-07-06 08:43:39 字數 1987 閱讀 3616

/*

*檔名稱:test.cpp

*完成日期:2023年11月1日

*版本:v1.0

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

*輸入描述:輸入兩個稀疏矩陣

*程式輸出:輸出相加結果

*/

1.標頭檔案:tup.h,包含定義稀疏矩陣的三元組表示資料結構的**、巨集定義、要實現演算法的函式的宣告

#ifndef tup_h_included

#define tup_h_included

#define m 6

#define n 7

#define maxsize 100 //矩陣中非零元素最多個數

typedef int elemtype;

typedef struct

tupnode; //三元組定義

typedef struct

tsmatrix; //三元組順序表定義

void creatmat(tsmatrix &t,elemtype a[m][n]); //從乙個二維稀疏矩陣建立其三元組表示

bool value(tsmatrix &t,elemtype x,int i,int j); //三元組元素賦值

bool assign(tsmatrix t,elemtype &x,int i,int j); //將指定位置的元素值賦給變數

void dispmat(tsmatrix t);//輸出三元組

void trantat(tsmatrix t,tsmatrix &tb);//矩陣轉置

#endif // tup_h_included

2.原始檔:tup.cpp,包含實現各種演算法的函式的定義

#include "stdio.h"

#include "tup.h"

void creatmat(tsmatrix &t,elemtype a[m][n]) //從乙個二維稀疏矩陣建立其三元組表示

t.data[k].r=i;

t.data[k].c=j;

t.data[k].d=x;

t.nums++;

}return true; //成功時返回true

}bool assign(tsmatrix t,elemtype &x,int i,int j) //將指定位置的元素值賦給變數

void dispmat(tsmatrix t) //輸出三元組

{ int i;

if (t.nums<=0) //沒有非零元素時返回

return;

printf("\t%d\t%d\t%d\n",t.rows,t.cols,t.nums);

printf("\t------------------\n");

for (i=0; i#include "tup.h"

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

{ int i,j;

elemtype va,vb,vc;

if (a.rows!=b.rows || a.cols!=b.cols)

return false; //行數或列數不等時不能進行相加運算

c.rows=a.rows;

c.cols=a.cols; //c的行列數與a的相同

c.nums=0;

for(i=0; i

執行結果:

知識點總結:

三元組儲存稀疏矩陣的應用。

第九周上機實踐專案 閱讀專案

檔名稱 main.cpp 作 者 劉濤 完成日期 2016年4月23號 版 本 號 v1.0 問題描述 動態分配記憶體 include using namespace std class a a class b b int main 執行結果 執行過程 主函式裡定義了乙個b類的物件,所以執行b的建構...

第九周 專案三 (2)兩個稀疏矩陣相加的運算

問題描述及 煙台大學計控學院 作 者 邊朔 完成日期 2016年10月27日 問題描述 提示1 兩個行數 列數相同的矩陣可以相加 提示2 充分利用已經建立好的演算法庫解決問題 include include tup.h int main int b m n creatmat ta,a creatma...

第九周上機實踐 專案4(1) 建立廣義表演算法庫

檔名稱 test.cpp 完成日期 2015年11月1日 版本 v1.0 問題描述 建立廣義表演算法庫 輸入描述 無 程式輸出 輸出廣義表長度 深度 1.標頭檔案 glist.h,包含定義廣義表資料結構的 巨集定義 要實現演算法的函式的宣告 ifndef glist h included defin...