稀疏矩阵与稀疏矩阵的转置(三元组)

首先想要转置矩阵,就要有原矩阵

根据要求选择了三元组来存储稀疏矩阵

 

 

 

 

#include <stdio.h>
#include <stdlib.h>

#define MAXSIZE 12500

typedef struct{
   int i,j;
   int e;
}Triple;

typedef struct{
 Triple data[MAXSIZE+1];
 int mu,nu,tu;
}TSMatrix;
//三元组顺序存储

int main(void){
    TSMatrix t,m;//创建两个三元组
    int a;
    printf("请输入矩阵的行数、列数和非零元的个数\n");
    scanf("%d%d%d",&m.mu,&m.nu,&m.tu);
    printf("请输入非零元素的行标、列标和非零元\n");
    for(a=1;a<=m.tu;a++){
         scanf("%d%d%d",&m.data[a].i,&m.data[a].j,&m.data[a].e);
    }//输入矩阵

 a=1;
    for(int i=1;i<=m.mu;i++){
        for(int j=1;j<=m.nu;j++){
            if(m.data[a].i==i&&m.data[a].j==j)
                printf("%5d",m.data[a++].e);
            else printf("%5d",0);
        }
        printf("\n");
    }//输出原矩阵

    t.mu=m.nu;
    t.nu=m.mu;
    t.tu=m.tu;
    if(t.tu){
        a=1;
        for(int b=1;b<=m.nu;++b){
            for(int c=1;c<=m.tu;++c)
            if(m.data[c].j==b){
                t.data[a].i=m.data[c].j;
                t.data[a].j=m.data[c].i;
                t.data[a].e=m.data[c].e;
                ++a;
            }
        }
    }//转置矩阵

    printf("转置矩阵为:\n");
    a=1;
    for(int i=1;i<=t.mu;i++){
        for(int j=1;j<=t.nu;j++){
            if(t.data[a].i==i&&t.data[a].j==j)
                printf("%5d",t.data[a++].e);
            else printf("%5d",0);
        }
        printf("\n");
    }//输出转置矩阵
    return 0;
}

 

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值