設有採用三元組順序表儲存的兩個稀疏矩陣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 ...