/*
*檔名稱: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...