⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 xishujuzhen.cpp

📁 稀疏矩阵相加
💻 CPP
字号:
#include<stdio.h>
#include<string.h>

#define OK 1
#define MAX 10

typedef struct
{
	int i,j;
	int v;
}TriTupleNode;

typedef struct
{
	TriTupleNode data[MAX];
	int m;
	int n;
	int t;
}TSMatrix;

//输入矩阵
void InitTriTupleNode(TSMatrix *a)
{
	int i,j,k,val,maxrow,maxcol;
	maxrow=0;
	maxcol=0;
	k=1;
	while(i!=-1&&j!=-1)
	{
		printf("input row col val:");
		scanf("%d%d%d",&i,&j,&val);
		a->data[k].i=i;
		a->data[k].j=j;
		a->data[k].v=val;
		if(maxrow<i)maxrow=i;
		if(maxcol<j)maxcol=j;
		k++;
	}
	a->m=maxrow;
	a->n=maxcol;
	a->t=k;
}

//显示矩阵
void ShowMatrix(TSMatrix *a)
{
	int p,q;
	int t=1;
	for(p=1;p<=a->m;p++)
	{
		for(q=1;q<=a->n;q++)
			if(a->data[t].i==p&&a->data[t].j==q)
			{
				printf("%d ",a->data[t].v);
				t++;
			}
			else printf("0 ");
			printf("\n");
	}
}
//矩阵相加
void Add(TSMatrix *a,TSMatrix *b,TSMatrix *c)
{
    int i=1,j=1,k=1;                     
    while(i<=a->t&&j<=b->t)
	{
        if(a->data[i].i==b->data[j].i)    
		{
           if(a->data[i].j==b->data[j].j)
		   {
                c->data[k].i=a->data[i].i;
                c->data[k].j=a->data[i].j;
                c->data[k].v=a->data[i].v+b->data[j].v;
                i++;
                j++;
                k++;
		   }
          else if(a->data[i].j<b->data[j].j)
		  {
               c->data[k].i=a->data[i].i;
               c->data[k].j=a->data[i].j;
               c->data[k].v=a->data[i].v;
               i++;
               k++;
		  }
          else if(a->data[i].j>b->data[j].j)
		  {
               c->data[k].i=b->data[j].i;
               c->data[k].j=b->data[j].j;
               c->data[k].v=b->data[j].v;
               j++;
               k++;
		  }
		}
      else if(a->data[i].i<b->data[j].i)
	  {
           c->data[k].i=a->data[i].i;
           c->data[k].j=a->data[i].j;
           c->data[k].v=a->data[i].v;
           i++;
           k++;
	  }
     else if(a->data[i].i>b->data[j].i)
	 {
           c->data[k].i=b->data[j].i;
           c->data[k].j=b->data[j].j;
           c->data[k].v=b->data[j].v;
           j++;
           k++;
	 }
	}
        c->n=a->n;
        c->m=a->m;
        c->t=k;
}


void main()
{
	TSMatrix a,b,c;
	TSMatrix *pa=&a,*pb=&b,*pc=&c;
	printf("请输入矩阵A:\n");
	InitTriTupleNode(pa);
	ShowMatrix(pa);
	printf("请输入矩阵B:\n");
	InitTriTupleNode(pb);
	ShowMatrix(pb);
	printf("两矩阵相加得:\n");
	Add(pa,pb,pc);
    ShowMatrix(pc);

}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -