稀疏矩阵转置

Description

输出稀疏矩阵的转置矩阵。(行列均不大于20)

Input

第一行输入两个正整数n和m,分别表示矩阵的行数和列数,
然后输入矩阵三元组,
最后输入(0 0 0)表示结束输入。

Output

转置后的矩阵。

  • Sample Input 
    4 4
    1 1 1
    2 1 2
    3 2 3
    0 0 0
  • Sample Output
    1 1 1
    1 2 2
    2 3 3
  • code:
#include<stdio.h>  
#include<stdlib.h>  
  
#define MAXSIZE 100  
  
typedef struct {  
  int  i,j;  
  int  e;  
}Triple;  
  
typedef struct  {  
  Triple data[MAXSIZE+1];  
  int mu,nu,tu;  
}TSMatrix;  
void change(TSMatrix A)  
{  
    int m,k;  
    int c,r,n;  
    for(m = 0;m < A.tu-1;m++)//先行升序  
    {  
        for(k = m;k < A.tu;k++)  
        {  
            if(A.data[m].j > A.data[k].j)  
            {  
                c = A.data[m].j;  
                A.data[m].j = A.data[k].j;  
                A.data[k].j = c;  
                r = A.data[m].i;  
                A.data[m].i = A.data[k].i;  
                A.data[k].i = r;  
                n = A.data[m].e;  
                A.data[m].e = A.data[k].e;  
                A.data[m].e = n;  
            }  
        }  
    }  
    for(m = 0;m < A.tu-1;m++)//列相同,行升序  
    {  
        for(k = m;k < A.tu;k++)  
        {  
            if(A.data[m].j == A.data[k].j && A.data[m].i > A.data[k].i)  
            {  
                r = A.data[m].i;  
                A.data[m].i = A.data[k].i;  
                A.data[k].i = r;  
                n = A.data[m].e;  
                A.data[m].e = A.data[k].e;  
                A.data[k].e = n;  
            }  
        }  
    }  
}  
void output(TSMatrix A)  
{  
    int i;  
    for(i=0;i<A.tu;i++)  
    {  
        printf("%d %d %d\n",A.data[i].j,A.data[i].i,A.data[i].e);  
    }  
}  
int main()  
{  
    TSMatrix A;  
    int n,m,i;  
    int x,y,z;  
    scanf("%d %d",&n,&m);  
    A.mu=n;  
    A.nu=m;  
    A.tu=0;  
    for(i=0;;i++)  
    {  
        scanf("%d %d %d",&x,&y,&z);  
        if(x==0&&y==0&&z==0)  
            break;  
        A.data[i].i=x;  
        A.data[i].j=y;  
        A.data[i].e=z;  
        A.tu++;  
    }  
    change(A);  
    output(A);  
    return 0;  
}  


猜你喜欢

转载自blog.csdn.net/zhao2018/article/details/79993917