三元祖实现矩阵转换2-(跳着找,顺着存)

代码:

#include<stdio.h>
#include<stdlib.h>
typedef struct 
{
	int i,j;
	int v;//值
}triple;
typedef struct
{
	triple data[100];
	int m,n,t;//行数,列数,元素数
}tripletable;
tripletable transmatrix(tripletable a)
{
	tripletable b;
	b.m=a.n;
	b.n=a.m;
	b.t=a.t;//
	int col,x;
	int num[10],pot[10];//
	if(b.t)
	{   
	   for(col=1;col<=a.n;col++)
		   num[col]=0;
	   for(int k=0;k<a.t;k++)
		   num[a.data[k].j]++;
	   pot[1]=0;
	   for(col=2;col<=a.n;col++)
		   pot[col]=pot[col-1]+num[col-1];
	   int q;
	   for(x=0;x<a.t;x++)
	   {
		   col=a.data[x].j;
		   q=pot[col];
		   b.data[q].i=col;
		   b.data[q].j=a.data[x].i;
		   b.data[q].v=a.data[x].v;
		   pot[col]++;
	   }
	}
    return b;
}
int main()
{
	tripletable a,b;
	printf("请输入三元组a的行数,列数和元素个数:\n");
	scanf("%d%d%d",&a.m,&a.n,&a.t);
	printf("请输入三元组的具体信息(包括行,列,值)\n");
	for(int x=0;x<a.t;x++)
	{
		scanf("%d%d%d",&a.data[x].i,&a.data[x].j,&a.data[x].v);
	}
	b=transmatrix(a);
	printf("输出转置后三元组:\n");
	for( x=0;x<b.t;x++)
	{
		printf("%d %d %d\n",b.data[x].i,b.data[x].j,b.data[x].v);
	}
	return 0;
}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值