有兩個稀疏矩陣a,b,規格分別是m * n,n * k;現在要求編寫乙個函式,來計算c=a * b,並且a,b.c矩陣皆由三元組儲存。#函式程式段
//先將兩個三元組轉換成矩陣,然後計算兩個矩陣的乘積,然後再轉化成三元組
void
trimatmultiply
(int a
[3], int b
[3], int c
[3],int m, int n, int k)}if
(flag>ak)}}
for(int i=
0;i++i)
//b矩陣復原}if
(flag>bk)}}
//初始化c矩陣
for(int i=
0;i++i)
}//求c矩陣,m行k列
for(int i=
0;i++i)}}
//把c矩陣轉化為三元組
int count=0;
//記錄c矩陣中非零元素
for(int i=
0;i++i)}}
c[0]
[0]=count;c[
0][1
]=m;c[
0][2
]=k;
}
#完整測試程式段
#include
#define maxsize 3
using namespace std;
//建立三元組儲存稀疏矩陣(int型)
void
createtrimat
(int a
[maxsize]
, int m, int n, int b
[3])
}b[0
][0]
=k;b[0
][1]
=m;b[0
][2]
=n;}
}//先將兩個三元組轉換成矩陣,然後計算兩個矩陣的乘積,然後再轉化成三元組
void
trimatmultiply
(int a
[3], int b
[3], int c
[3],int m, int n, int k)}if
(flag>ak)}}
for(int i=
0;i++i)
//b矩陣復原}if
(flag>bk)}}
//初始化c矩陣
for(int i=
0;i++i)
}//求c矩陣,m行k列
for(int i=
0;i++i)}}
//把c矩陣轉化為三元組
int count=0;
//記錄c矩陣中非零元素
for(int i=
0;i++i)}}
c[0]
[0]=count;c[
0][1
]=m;c[
0][2
]=k;
}int main()
,,},bmat[
3]=,
,}; int a
[100][
3],b
[100][
3],c
[100][
3];createtrimat
(amat,3,
3,a)
;createtrimat
(bmat,3,
3,b)
;trimatmultiply(a
,b,c
,3,3
,3);
for(int i=
0;i<4;
++i)
cout<}}
資料結構實驗題目
1 集合的交 並 差運算 容易 問題描述 編制乙個能演示執行集合的交 並和差運算的程式。集合元素用小寫英文本母。基本要求 1 用線性表來儲存集合 2 分別實現交 並和差這三個集合運算 3 輸出結果 2成績統計 中等 問題描述 給出n個學生的m門考試的成績表,每個學生的資訊由學號 姓名以及各科成績組成...
資料結構拓展題目
本題要求實現乙個函式,將給定的單鏈表逆轉。函式介面定義 list reverse list l 其中list結構定義如下 typedef struct node ptrtonode struct node typedef ptrtonode list 定義單鏈表型別 l是給定單鏈表,函式revers...
資料結構演算法題目
從上到下按層列印二叉樹,同一層結點從左至右輸出。每一層輸出一行。幾個演算法題目 請實現乙個函式按照之字形列印二叉樹,即第一行按照從左到右的順序列印,第二層按照從右至左的順序列印,第三行按照從左到右的順序列印,其他行以此類推。幾個演算法題目 給乙個鍊錶,若其中包含環,請找出該鍊錶的環的入口結點,否則,...