第九周 稀疏矩陣的三元組表示的實現及應用

2021-07-24 03:07:07 字數 2781 閱讀 9959

/* 

檔名稱:第九周 稀疏矩陣的三元組表示的實現及應用.cpp

完成日期:2023年10月27日 

版 本 號:v1.0 

問題描述: (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函式,測試上面實現的演算法  

輸入描述:若干測試資料。 

程式輸出:三元組對應操作的輸出。 

標頭檔案tup.h:

#include "stdio.h"  

#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"tup.h"  

//tsmatrix儲存行的個數、列的個數、及非0的個數、tupnode陣列(包含每個元素的row,col和實際值)

void creatmat(tsmatrix &t,elemtype a[m][n])//從乙個二維稀疏矩陣建立其三元組表示

int k=0,k1;

while(kt.data[k].r)

while(kt.data[k].c)

if (t.data[k].r==i && t.data[k].c==j) //存在這樣的元素

t.data[k].d=x;

else

t.data[k].r=i;

t.data[k].c=j;

t.data[k].d=x;

t.nums++;

return true;

} } //三元組元素賦值

bool assign(tsmatrix t,elemtype &x,int i,int j)

int k=0;

while(kt.data[k].r&&j>t.data[k].c)

k++;

} if(t.data[k].r==i&&t.data[k].c==j)

else x=0;

return true;

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

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;

}

執行結果:

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

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

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

作 者 孫子策 完成日期 2016.10.27 問題描述 提示1 兩個行數 列數相同的矩陣可以相加 提示2 充分利用已經建立好的演算法庫解決問題 標頭檔案 ifndef tup h included define tup h included define m 6 define n 7 define...

第九周 稀疏矩陣的三元組表示的實現及應用

all right reserved.date 2015年10月26日 版本 v1.0.1 作業系統 xp 執行環境 vc6.0 問題描述 建立稀疏矩陣三元組表示的演算法庫,包括 頭文tup.h,定義資料型別,宣告函式 原始檔tup.cpp,實現稀疏矩陣三元組表示的基本運算,主要演算法包括 void...