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

2021-08-13 03:08:32 字數 3011 閱讀 8394

/*

*all right reserved.

*檔名稱:20171207.cpp

*完成日期;2023年12月07日

*版本號;v1.1

* *問題描述:如下

*輸入描述:功能需求

*程式輸出:所需功能的實現

*/

1)建立稀疏矩陣三元組表示的演算法庫,包括: 

① 頭文tup.h,定義資料型別,宣告函式; 

② 原始檔tup.cpp,實現稀疏矩陣三元組表示的基本運算,主要演算法包括:

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

③ 設計main函式,測試上面實現的演算法 

#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

#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) //輸出三元組

, ,,,

,};creatmat(t,a);

printf("b:\n");

dispmat(t);

if (assign(t,x,2,5)==true) //呼叫時返回true

printf("assign(t,x,2,5)=>x=%d\n",x);

else //呼叫時返回false

printf("assign(t,x,2,5)=>引數錯誤\n");

value(t,y,2,5);

printf("執行value(t,10,2,5)\n");

if (assign(t,x,2,5)==true) //呼叫時返回true

printf("assign(t,x,2,5)=>x=%d\n",x);

else //呼叫時返回false

printf("assign(t,x,2,5)=>引數錯誤\n");

printf("b:\n");

dispmat(t);

trantat(t,tb);

printf("矩陣轉置tb:\n");

dispmat(tb);

return 0;

}

執行結果:

(2)採用三元組儲存稀疏矩陣,設計兩個稀疏矩陣相加的運算演算法 

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

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

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

#include "stdio.h"

#include "tup.h"

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

, ,,,

,};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;

}

執行結果:

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

檔名稱 1.pp 完成日期 2015年10月30日 問題描述 稀疏矩陣的三元組表示的實現及應用 1 建立稀疏矩陣三元組表示的演算法庫,包括 頭文tup.h,定義資料型別,宣告函式 原始檔tup.cpp,實現稀疏矩陣三元組表示的基本運算,主要演算法包括 void creatmat tsmatrix t...

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

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

第九周專案3 (1)稀疏矩陣的三元組表示

問題及 1 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 re...