用十字鍊錶表示的稀疏矩陣類

2021-06-09 00:10:44 字數 1233 閱讀 1165

總結:

(一)在用十字鍊錶結構表示稀疏矩陣時,矩陣中的每乙個非零元素對應乙個結點,每個結點五個域:行域,列域,值域,向下域和向右域,行域和列域分別存放非零元素所在的行號和列號,值域存放非零元素的值,向下域指示同一列中下乙個非零元素的儲存結點序號,向右域指示同一行中下乙個非零元素的儲存結點序號。

(二)十字鍊錶表示稀疏矩陣的結構特點如下:

(1)稀疏矩陣每一行每一列均用帶表頭結點的迴圈鍊錶表示;

(2)表頭結點中的行域和列域的值均置為-1(即row=-1,col=-1);

(3)行、列鍊錶的表頭結點合用,且這些表頭結點存放在乙個順序儲存空間中。

因此,只要給出行列鍊錶的頭指標,就可以很方便地掃瞄到稀疏矩陣中的任意一行或一列中的非零元素。

1.十字鍊錶表示的稀疏矩陣類:

#include #include using namespace std;

template struct cn

;templateclass cn_array

// 初始化

void in_cn_array(); // 以三元組形式從鍵盤輸入稀疏矩陣非零元素

void th_cn_array(int,int,t); // 由一般稀疏矩陣轉換

void prt_cn_array(); // 按行輸出稀疏矩陣

};template void cn_array::in_cn_array()

return;

}//由一般稀疏矩陣轉換

template void cn_array::th_cn_array(int m,int n,t a)

} return;

}template void cn_array::prt_cn_array()

else

cout<2.應用例項

#include "cn.array.h"

int main()

, ,

, ,

, ,

};cn_arrayx,y;

x.th_cn_array(7,8,&a[0][0]);

cout<

3.實驗結果

稀疏矩陣十字鍊錶表示法

稀疏矩陣十字鍊錶表示法和基本運算 include include define m 3 矩陣行 define n 3 矩陣列 define max m n m n 矩陣行列較大者 typedef int elemtype typedef struct mtxn tag matnode 十字鍊錶型別定...

十字鍊錶表示稀疏矩陣的基本操作

問題描述 兩個相同行數和列數的稀疏矩陣用十字鍊錶實現加法運算 資料描述 typedef struct ele elenode 演算法描述 1 若q j v j,則需要在c矩陣的鍊錶中插入乙個值為bij的結點,修改v v right。2 如q jj,則需要在c矩陣的鍊錶中插入乙個值為aij的結點,修改...

十字鍊錶 稀疏矩陣

include includetypedef struct olnode olnode,olink typedef struct 行和列煉表頭指標向量基址,由creatsmatrix ol 分配 crosslist 初始化m crosslist型別的變數必須初始化,否則建立 複製矩陣將出錯 bool...