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

2021-08-09 17:15:20 字數 3110 閱讀 7935

/*

* 檔名稱:cpp1.

* 作    者:劉思源

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

* 版 本 號:v1.0

** 問題描述:建立稀疏矩陣三元組表示的演算法庫,包括:

① 頭文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函式,測試上面實現的演算法

* 輸入描述:無需輸入

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

[cpp]view plain

copy

#include 

#include "tup.h"

intmain()  

,  ,  

,  ,  

,    

};  

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;  

}  

[cpp]view plain

copy

#ifndef tup_h_included

#define tup_h_included

#define m 6

#define n 7

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

typedef

intelemtype;  

typedef

struct

tupnode;                  //三元組定義

typedef

struct

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

void

creatmat(tsmatrix &t,elemtype a[m][n]);  

//從乙個二維稀疏矩陣建立其三元組表示

bool

value(tsmatrix &t,elemtype x,

inti,

intj);  

//三元組元素賦值

bool

assign(tsmatrix t,elemtype &x,

inti,

intj); 

//將指定位置的元素值賦給變數

void

dispmat(tsmatrix t);

//輸出三元組

void

trantat(tsmatrix t,tsmatrix &tb);

//矩陣轉置

#endif // tup_h_included

[cpp]view plain

copy

#include "stdio.h"

#include "tup.h"

void

creatmat(tsmatrix &t,elemtype a[m][n])  

//從乙個二維稀疏矩陣建立其三元組表示

}  }  bool

value(tsmatrix &t,elemtype x,

inti,

intj)  

//三元組元素賦值

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,

inti,

intj)  

//將指定位置的元素值賦給變數

void

dispmat(tsmatrix t)        

//輸出三元組

void

trantat(tsmatrix t,tsmatrix &tb)       

//矩陣轉置

}  }  

執行結果:

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

檔名稱 cpp1.作 者 劉思源 完成日期 2017 年 10 月 22 日 版 本 號 v1.0 問題描述 採用三元組儲存稀疏矩陣,設計兩個稀疏矩陣相加的運算演算法 提示1 兩個行數 列數相同的矩陣可以相加 提示2 充分利用已經建立好的演算法庫解決問題 提示3 教材例6.3已經給出兩個稀疏矩陣相加...

第八周 專案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...