用三列二維陣列表示的稀疏矩陣類

2021-06-08 14:30:29 字數 1104 閱讀 3094

1.稀疏矩陣:矩陣中絕大多數的元素值為零,只有少數的非零元素值;

2.對稀疏矩陣採用壓縮儲存的目的是為了節省儲存空間,並且,稀疏矩陣壓縮儲存後,還要能夠比較方便地訪問其中的沒個元素(包括零元素和非零元素);

3.對稀疏矩陣進行壓縮儲存有兩種方法:稀疏矩陣的三列二維陣列表示和十字鍊錶方法。

稀疏矩陣的三列二維陣列表示:

(1)每個非零元素用三元組表示:(i,j,v)分別對應(行,列,非零元素);

(2) 為了表示唯一性,除了每個非零元素用乙個三元組表示外,在所有的非零元素三元組之前新增一組資訊(i,j,v)對應(總行數,總列數,非零元素個數),也就是說,我們要確定確切的稀疏矩陣,必須先知道該稀疏矩陣的總行數,總列數,非零個數;

(3)為了便於在三列二維陣列b中訪問稀疏矩陣a中的各元素,通常還附設兩個長度與稀疏矩陣a的行數相同的向量pos與num。其中pos[k]表示稀疏矩陣a中的第k行的第乙個非零元素(如果有的話)在三列二維組b中的行號;num[k]表示稀疏矩陣a中第k行中非零元素的個數;

pos[0]=0; pos[k]=pos[k-1]+num[k-1]

4.三列二維陣列表示的稀疏矩陣類如下:

檔名:x_array.h

#include #include using namespace std;

template struct b

;//三列二維陣列表示的稀疏矩陣類

template class x_array

;// 以三元組形式鍵盤輸入稀疏矩陣非零元素

template void x_array::in_x_array()

pos=new int[mm];

num=new int[mm];

for(k=0;kvoid x_array::cp_x_array(int m,int n,int t,bb)

,,,,,,,};

x_arrayx,y,z,xt,c;

x.cp_x_array(7,8,8,a);

cout<

3.實驗結果:

部落格69 用一維陣列來存二維稀疏矩陣

內容 今天記錄下使用一維結構還儲存二維稀疏矩陣。因為稀疏矩陣中,有數值的量佔全數量的比重較小,如果使用二維陣列來儲存就會比較耗費空間,那麼其實可以使用一維陣列來儲存就可以了。這個剛好也是春招的一道筆試題,在之前的資料結構書裡也有看到過類似的做法。我就不再打一遍了,直接從我的本地ide截出重要的部分了...

二維陣列的指標表示

1.型別說明 int b 定義乙個int型指標變數 int p 3 定義乙個int型指標陣列的變數 int 3 或 int d 3 定義乙個陣列指標變數 2.初始化賦值 假設二維陣列為 int a 3 3 1 用指標b表示二維陣列時為 int b a 0 將指標b指向a的首元素位址 二維陣列的表示方...

二維陣列轉稀疏陣列的思路

二維陣列轉稀疏陣列的思路 遍歷 原始的二維陣列,得到有效資料的個數sum 根據sum就可以建立稀疏陣列sparsearr int sum 1 3 將二維陣列的有效資料存入到稀疏陣列 建立乙個原始大的二維陣列11 11 0 表示沒有棋子 int chessarr1 newint 11 11 chess...