十字链表实现矩阵加法(C语言实现)

本文介绍了如何使用C语言实现稀疏矩阵的加法操作,通过十字链表来存储矩阵。首先创建两个稀疏矩阵A和B,然后通过插入和遍历十字链表的方式进行矩阵相加,最后输出结果矩阵C。代码中详细注释了每个步骤,包括创建、插入节点和矩阵相加的函数。

C语言实现用十字链表表示的稀疏矩阵的加法。
题目:编写两个稀疏矩阵相加(C=A+B)的算法,要求稀疏矩阵用十字链表表示。
思路:首先建立十字链表,生成A,B。然后实现加法(注意要考虑各种情况!!)。
一些说明:
A----矩阵A ,B----矩阵B,C----矩阵C
用p,q控制A的行列
用u,v控制B的行列


下面是程序的代码,注释很详细,相信你们能够看懂,看不懂的可以留言给我。

#include<stdio.h>
#include<malloc.h>
#define smax 45
typedef int datatype;
typedef struct lnode  //结构体和共用体的定义
{
 int i,j;
 struct lnode *cptr,*rptr;
 union
 {
  struct lnode *next;
  datatype v;
 }uval;
}link;
int flag=0;
//建立稀疏矩阵的函数,返回十字链表头指针
link *creatlinkmat()
{
 link *p,*q,*head,*cp[smax];
 int i,j,k,m,n,t,s;
 datatype v;
 printf("输入行、列,非零元素个数(m,n,t数字间用逗号分隔)");
 scanf("%d,%d,%d",&m,&n,&t);//输入行、列,非零元素个数 
 if(m>n)s=m; else s=n;  
 head=(link *)malloc(sizeof(link));  //建立十字链表头结点
 head->i=m;head->j=n;
 cp[0]=head;   //cp[]是指针数组,分别指向头结点和行、列表头结点
 for(i=1;i<=s;i++) //建立头结点循环链表
 {
  p=(link *)malloc(sizeof(link));
  p->i=0;p->j=0;
  p->rptr=p;p->cptr=p

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值