應用題1

香橙雪梨热红茶發表於2024-12-11

這道題知識點參考書97頁-100頁稀疏矩陣的相關知識。
知識點:

  • 什麼是稀疏矩陣三元組線性表十字連結串列。
  • 什麼是轉置(運算)

如果一個矩陣中絕大多數元素數值為0,我們稱其為稀疏矩陣
一般稀疏矩陣有兩種表示方法,三元組線性表十字連結串列

  • 三元組線性表
    我們先來講講三元組線性表是如何表示稀疏矩陣的
    舉個例子,這裡有個稀疏矩陣,長這個樣子

    矩陣中零太多了,如果每個元素都儲存就太佔用儲存空間了,就這麼幾個數(分佈無規律),我們記一下非零元素的行數,列數和數值就可以了,所以三元組表示法中的三元就分別是行數row,列數col元素數值value(row,col,value)。如果使用順序儲存結構來儲存稀疏矩陣的三元組,可以得到稀疏矩陣的一種壓縮儲存表達方式--三元組順序表。
    所以,圖中第0行第4列的元素1就表示為(0,4,1)
    如果以行為主序儲存,這個稀疏矩陣的三元組順序表則表示為
    (0,4,1),(2,1,-1),(3,4,-2),(4,0,5),(5,2,7)

  • 十字連結串列法
    再來說說十字連結串列法,當矩陣進行運算後,元素數值常常發生較大改動,如果要對元素數值進行刪除,插入,修改等工作再用順序儲存會很不方便,所以十字連結串列法誕生了。
    首先對矩陣的每行每列都分別建立一個不帶頭節點的單連結串列。每個非零元素都對應一個節點,因為該節點同時存在與它所在的行連結串列和列連結串列中,所以兩個連結串列在此節點形成交叉。為了管理連結串列,用rowhead陣列儲存行連結串列頭指標,用colhead陣列儲存列連結串列頭指標,每個節點對應一個非零元素,儲存該非零元素的三元組(row,col,value)以及該節點的行後繼指標和列後繼指標。
    具體案例:

  • 轉置:大家之前學過線性代數吧,我們知道矩陣有很多運算加法,減法等。題幹中提到的轉置也是一種我們之前學過的矩陣運算。
    轉置矩陣的實現就是將原有矩陣M進行行元素和列元素的調換,使得得到的轉置矩陣N(j,i)=M(i,j)

以上就是這道題的全部知識點了。

瞭解完考點這道題目就很好寫了
1.根據給出的三元組線性表畫出稀疏矩陣M

2.畫出M的十字連結串列

3.轉置M得到N
(其實可以省去這一步,直接將M的非零元素行列交換,再按照順序重新排列即可)
寫出N的三元組線性表

相關文章