在进行矩阵的加法、减法和乘法等运算时,用十字链表表示稀疏矩阵比用三元组表示更灵活,以下为结构图和代码
/* 十字链表的结构类型
*/
typedef int ElemType;
typedef struct OLNode{
int row,col;
ElemType value;
struct OLNode *right,*down;
}OLNode,*OLink;
typedef struct{
OLink *row_head,*col_head;
int m,n,len;
}CrossList;
/*建立三元稀疏矩阵
1、读入稀疏矩阵的行、列、非零元素的个数
2、动态申请行、列链表的头指针向量
3、逐个读入非零元素,分别插入行链表、列链表
*/
int CreateCrossList(CrossList *s){
int k,m,n,t,i,j;
ElemType e;
OLNode *p=NULL,*q=NULL;
printf("Input m,n,t of CrossList:\n");
scanf("%d %d %d ",&m,&n,&t);
s->m=m;s->n=n;s->len=t;
s->row_head=(OLNode *)malloc((m+1)*sizeof(OLNode));
if(s->row_head==NULL){
printf("行头指针创建失败\n");
}
s->col_head=(OLNode *)malloc((n+1)*sizeof(OLNode));
if(