目的:運用串解決問題
**:
#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);//矩陣轉置
#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;
}
稀疏矩陣(三元組順序表實現)
定義了乙個稀疏矩陣類,有轉置和相乘,相加三個功能,主要是熟悉稀疏矩陣的三元組順序表儲存的一些操作,和一般的矩陣不同的地方,兩個轉置的演算法,第乙個是較容易想到的,書上管它叫 按需點菜 法,就是按一開始列的順序,乙個個轉為新矩陣中行的順序。第二個叫作 按位就坐 法,就是條件兩個輔助陣列,確定每一列中第...
第八周專案4 稀疏矩陣的三元組表示的實現及應用
檔名稱 cpp1.作 者 劉思源 完成日期 2017 年 10 月 22 日 版 本 號 v1.0 問題描述 建立稀疏矩陣三元組表示的演算法庫,包括 頭文tup.h,定義資料型別,宣告函式 原始檔tup.cpp,實現稀疏矩陣三元組表示的基本運算,主要演算法包括 void creatmat tsmat...
第八周專案4 稀疏矩陣的三元組的實現與應用
檔名稱 cpp1.作 者 劉思源 完成日期 2017 年 10 月 22 日 版 本 號 v1.0 問題描述 採用三元組儲存稀疏矩陣,設計兩個稀疏矩陣相加的運算演算法 提示1 兩個行數 列數相同的矩陣可以相加 提示2 充分利用已經建立好的演算法庫解決問題 提示3 教材例6.3已經給出兩個稀疏矩陣相加...