稀疏矩陣十字鍊錶表示法

2021-10-05 20:40:41 字數 1010 閱讀 1283

稀疏矩陣十字鍊錶表示法和基本運算

#include #include #define m 3         			//矩陣行

#define n 3 //矩陣列

#define max ((m)>(n)?(m):(n)) //矩陣行列較大者

typedef int elemtype;

typedef struct mtxn

tag;

} matnode; //十字鍊錶型別定義

void creatmat(matnode *&mh,elemtype a[n])

r->tag.link=mh; //置為迴圈鍊錶

for (i=0;irow=i;p->col=j;p->tag.value=a[i][j];

q=h[i]; //查詢在行表中的插入位置

while (q->right!=h[i] && q->right->colright;

p->right=q->right;q->right=p; //完成行表的插入

q=h[j]; //查詢在列表中的插入位置

while (q->down!=h[j] && q->down->rowdown;

p->down=q->down;q->down=p; //完成列表的插入

}} }

}void dispmat(matnode *mh)

p=p->tag.link; }}

//本主程式用於除錯

void main()

,,};

elemtype b[m][n]=,,};

matnode *mx,*my;

creatmat(mx,a);

creatmat(my,b);

printf("a的十字鍊錶:\n");dispmat(mx);

printf("b的十字鍊錶:\n");dispmat(my);

}

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

問題描述 兩個相同行數和列數的稀疏矩陣用十字鍊錶實現加法運算 資料描述 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...