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