資料結構題目記錄

2021-10-20 22:41:21 字數 1884 閱讀 9130

有兩個稀疏矩陣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...

資料結構演算法題目

從上到下按層列印二叉樹,同一層結點從左至右輸出。每一層輸出一行。幾個演算法題目 請實現乙個函式按照之字形列印二叉樹,即第一行按照從左到右的順序列印,第二層按照從右至左的順序列印,第三行按照從左到右的順序列印,其他行以此類推。幾個演算法題目 給乙個鍊錶,若其中包含環,請找出該鍊錶的環的入口結點,否則,...