稀疏矩陣 三元組表示的矩陣相加減

2021-09-14 07:22:23 字數 2065 閱讀 9631

設有採用三元組順序表儲存的兩個稀疏矩陣m和n,試著編寫乙個演算法,實現m和n相乘:

1.標頭檔案:」triseqmatrix.h」

該資料夾中包含著三元稀疏矩陣的建立、初始化、轉置、銷毀等操作

#pragma once

#include #include#define maxsize 200

typedef struct

/*三元組型別定義*/

triple;

typedef struct

/*矩陣型別定義*/

triseqmatrix;

int creatematrix(triseqmatrix *m)

//建立稀疏矩陣,按照行優先的順序輸入非零元素

while (flag);

m->data[i].i = m;

m->data[i].j = n;

m->data[i].e = e;

} return 1;

}void copymatrix(triseqmatrix m, triseqmatrix *n)

/*將m的非零元素的行號,列號和值賦給n*/

}void transposematrix(triseqmatrix m, triseqmatrix *n)

/*稀疏矩陣的轉置,按行搜尋,找到後交換行列座標,在按列排列即可*/

} }}void fasttransposematrix(triseqmatrix m, triseqmatrix *n)

//快速轉置

position[0] = 0;

for (i = 1; i < m.n; i++) //獲取每一列非零元素第乙個元素在行中的位置

n->len = m.len;

n->m = m.n;

n->n = m.m;

for (i = 0; i < n->len; i++)//轉置處理

free(num);

free(position);

}void destroymatrix(triseqmatrix * m)

/*銷毀稀疏矩陣*/

2.原始檔

#include "pch.h"

#include typedef int datatype;

#include"triseqmatrix.h"

int compare(int a, int b)

int addmatrix(triseqmatrix a, triseqmatrix b, triseqmatrix *c)

/*稀疏矩陣相加,比較每個非零元素的行號,列號,如果相同則進行加,如果不同將非零元素天入c,成功返回1,否則返回0*/

while(adata[k].e = a.data[a].e; //先賦值給c

c->len++;//長度加1;

c->data[k].i = a.data[a].i;

c->data[k].j = a.data[a].j;

a++;

k++;

}break;

case 0: //a,b中行號相等,比較列號

break;

case 0:

else

}break;

case 1:

break;

default:

break;

}} break;

case 1://a中元素的行號比b小

break;

default:

break;

} }while (a < a.len)

while (b < b.len)

return 1;

}int submatrix(triseqmatrix a, triseqmatrix b, triseqmatrix *c)

/*矩陣相減a-b*/

return addmatrix(a, b, c);

}void printmatrix(triseqmatrix m)

/*輸出稀疏矩陣*/

}int main()

三元組表示稀疏矩陣並相加

要求稀疏矩陣用三元組結構儲存,實現矩陣a b c,並採用矩陣形式顯示結果。定義兩個結構體,triple結構體用來存放每乙個非零元素的資訊 行標,列標,數值 tripledata用來存放兩個三元組矩陣的資訊 行數,列數,非零元素的個數 每乙個三元組結構都需要呼叫這兩個結構體,兩個結構體共同組成乙個稀疏...

稀疏矩陣三元組表示法的倒置

稀疏矩陣的概念及三元組表示法 如果乙個矩陣中的很多元素的值為零,即零元素的個數遠遠大於非零元素的個數時,稱該矩陣為稀疏矩陣。由於矩陣中零元素過多,若用一般方法對稀疏矩陣進行儲存會造成空間的大大浪費,因此,我們在儲存稀疏矩陣的時候,只需要對非零元素進行儲存。三元組表示法實際上就是乙個二維陣列,即將稀疏...

稀疏矩陣的三元組表示的應用(3 2)

問題描述 採用三元組儲存稀疏矩陣,設計兩個稀疏矩陣相加的運算演算法 輸入描述 兩個稀疏矩陣 程式輸出 相加運算後的結果。main函式 include tup.h int main int b m n creatmat ta,a creatmat tb,b printf a n dispmat ta ...