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

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

被折叠的 条评论
为什么被折叠?



