38、稀疏矩陣的十字鏈表表示和創建

用三元數組的結構來表示稀疏矩陣,在某些情況下可以節省存儲空間並加快運算速度。但在運算過程中,若稀疏矩陣的非零元素位置發生變化,必將會引起數組中元素的頻繁移動。這時,採用鏈式存儲結構(十字鏈表)表示三元組的線性表更爲恰當。

十字鏈表(orthogonal list)是稀疏矩陣的另一種存儲結構。它是用多重鏈表來存儲稀疏矩陣。十字鏈表適用於操作過程中非零元素的個數及元素位置變動頻繁的稀疏矩陣。

一、基本概念

十字鏈表爲矩陣中的每一行設置一個單獨鏈表,同時也爲每一列設置一個單獨鏈表。這樣,矩陣中的每個非零元就同時包含在兩個鏈表中(即所在行和所在列的鏈表)。這就大大降低了鏈表的長度,方便了算法中行方向和列方向的搜索,大大降低了算法的時間複雜度。

同一行的非零元素通過right域鏈接成一個鏈表,同一列的非零元素通過down域鏈接成一個鏈表,每一個非零元既是某個行鏈表中的結點,同時又是某個列鏈表中的結點。整個矩陣構成了一個十字交叉的鏈表。故稱爲十字鏈表。

二、C語言描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章