矩陣中有很多個零,其中非零元素只占壹小部分,大部分都是零。這被稱為稀疏矩陣。
稀疏矩陣的概念沒有嚴格的定義,矩陣元素總數中的零的數量/百分比也沒有嚴格的定義,這取決於感覺的概念。
嚴格數據結構中的定義,其中零可以是常數c。
C是否為零是壹個概念上的區別。
三重表示
第壹行(下標0):通常不存儲任何元素。
第壹個表示非零元素的數量,第二個表示行數,理論上三個表示列數。
矩陣中的元素從下標1開始存儲,通常按行優先存儲。
當然,您可以按列劃分優先級,或者將其存儲在任何地方,只需將所有元素存儲在其中即可。
鄰接表表示法
定義壹維數組,其下標對應於要存儲的矩陣的行標簽。
數組的元素是指針,每個指針指向壹個鏈表,鏈表中的節點存儲矩陣中非零元素的信息。
其中第壹信息是非零元素的值,
第二個信息是非零元素的列標簽。
每個鏈表的行標簽保存該鏈表中所有元素的行標簽信息。
每個鏈表中的節點存儲元素值和列標簽信息。
每個交叉鏈表都有壹個頭節點,它有五個域。
第壹行:第壹個字段是行數,第二個字段是列數,第三個字段是非零元素數。
第2行:兩個字段指向兩個數組的兩個指針。
第四個域:列數組和第五個域:行數組。
壹些指針存儲在這兩個數組中,指向表中的非零元素。
為表中所有非零元素申請壹個節點。
表格元素的節點類型與表格的頭節點類型相同,保存的信息不同。
元素節點
存儲的第壹個組件:行號。
第二部分是列號。
第三個組成部分存在:元素值。
存在第四和第五個組件:指針。
交叉鏈表的構造類似於二維數組。
它只是將存儲空間分配給非零元素。
行方向上節點之間的指針是從第五個節點域繪制的。
列方向上節點之間的指針源自第四個節點域。