三元組順序表,稀疏矩陣的三元組表示法
阿新 • • 發佈:2018-12-17
三元組順序表,用於稀疏矩陣的儲存,因此經常被稱為係數矩陣的三元組表示,它們是一個意思。
稀疏矩陣,即包含大量值為 0 的矩陣,此類矩陣的一種儲存方法是將矩陣中所有非 0 元素所在的位置(行標和列標)和元素值儲存在順序表(陣列)中,通過儲存由所有非 0 元素的三元組構成的順序表,以及該稀疏矩陣的行數和列數,即可完成對整個稀疏矩陣的儲存,這就是稀疏矩陣使用三元組表示的實現思想。
因此,每個非 0 元素的三元組需要使用結構體進行自定義:
例如,有圖 1 所示的稀疏矩陣:
圖 1 稀疏矩陣
對於該稀疏矩陣來說,即將(2,2,3)、(2,3,4)、(3,2,5)儲存進 data 陣列,並且儲存稀疏矩陣的行數 3 和列數 3 ,以及非 0 元素的個數 3 儲存起來,即可實現隊此矩陣的儲存。
稀疏矩陣,即包含大量值為 0 的矩陣,此類矩陣的一種儲存方法是將矩陣中所有非 0 元素所在的位置(行標和列標)和元素值儲存在順序表(陣列)中,通過儲存由所有非 0 元素的三元組構成的順序表,以及該稀疏矩陣的行數和列數,即可完成對整個稀疏矩陣的儲存,這就是稀疏矩陣使用三元組表示的實現思想。
因此,每個非 0 元素的三元組需要使用結構體進行自定義:
//三元組結構體 typedef struct { int i,j;//行標i,列標j int data;//元素值 }triple;稀疏矩陣的儲存,一方面要儲存矩陣中所有非 0 元素的三元組,同時還要記錄該稀疏矩陣的行數、列數以及矩陣中非 0 元素的個數,因此表示矩陣的結構也需要使用結構體實現:
#define number 100 //矩陣的結構表示 typedef struct { triple data[number];//儲存該矩陣中所有非0元素的三元組 int n,m,num;//n和m分別記錄矩陣的行數和列數,num記錄矩陣中所有的非0元素的個數 }TSMatrix;
圖 1 稀疏矩陣
對於該稀疏矩陣來說,即將(2,2,3)、(2,3,4)、(3,2,5)儲存進 data 陣列,並且儲存稀疏矩陣的行數 3 和列數 3 ,以及非 0 元素的個數 3 儲存起來,即可實現隊此矩陣的儲存。