第九周 三元組儲存稀疏矩陣

2021-07-24 03:02:20 字數 1983 閱讀 5474

/

作 者:孫子策

完成日期:2016.10.27

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

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

/

標頭檔案:

#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);//矩陣轉置

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

#endif // tup_h_included

main.cpp:

#include #include "a.h"

int main()

, ,,,

,};int b[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**:

#include "stdio.h"

#include "a.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) //沒有非零元素時返回

知識點總結:

判斷是否為0以及相加後是否為0等情況要多重分析。

心得體會:

還是有些不明白。

第九周專案三稀疏矩陣的三元組表示

檔名稱 main.cpp,tup.cpp,tup.h 完成日期 2015年10月31日 版本號 codeblocks 問題描述 稀疏矩陣的三元組表示相關的演算法庫採用程式的多檔案組織形式 輸入描述 無 程式輸出 見執行結果 ifndef tup h included define tup h inc...

稀疏矩陣的三元組順序儲存

該資料結構的操作主要是陣列的相加 和相乘,這兩個演算法全是我個人所寫,絕無參考,經測試應該少有bug a.h include define false 0 define true 1 define ok 1 define error 0 define max size 100 typedef int...

稀疏矩陣的三元組儲存演算法

稀疏矩陣,是零元素較多的矩陣。一般只要滿足 t 1 3 m n,t是非零元素個數,mn是矩陣行列數,就可以用三元組表示稀疏矩陣,可以節省空間。稀疏矩陣的壓縮儲存採用三元組的方法實現。其儲存規則是 每乙個非零元素佔一行,每行中包含非零元素所在的行號 列號 非零元素的數值。為完整描述稀疏矩陣,一般在第一...