稀疏矩陣十字鍊錶表示法和基本運算
#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...