1. 程式人生 > >三元組順序表,稀疏矩陣的三元組表示法

三元組順序表,稀疏矩陣的三元組表示法

三元組順序表,用於稀疏矩陣的儲存,因此經常被稱為係數矩陣的三元組表示,它們是一個意思。

稀疏矩陣,即包含大量值為 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 所示的稀疏矩陣:


圖 1 稀疏矩陣 
對於該稀疏矩陣來說,即將(2,2,3)、(2,3,4)、(3,2,5)儲存進 data 陣列,並且儲存稀疏矩陣的行數 3 和列數 3 ,以及非 0 元素的個數 3 儲存起來,即可實現隊此矩陣的儲存。