三元组顺序表表示的稀疏矩阵转置运算 Ⅰ(PTA)JAVA

三元组顺序表表示的稀疏矩阵转置。

输入格式:

输入第1行为矩阵行数m、列数n及非零元素个数t。
按行优先顺序依次输入t行,每行3个数,分别表示非零元素的行标、列标和值。

输出格式:

输出转置后的三元组顺序表结果,每行输出非零元素的行标、列标和值,行标、列标和值之间用空格分隔,共t行。

输入样例1:

3 4 3
0 1 -5
1 0 1
2 2 2

输出样例1:

0 1 1
1 0 -5
2 2 2
import java.util.Scanner;
 
public class Main{          
public static void main(String[] args) {
    txmatrs T =new txmatrs();//装入初始矩阵
    txmatrs Tb=new txmatrs();//装入转置矩阵
    Scanner sc=new Scanner(System.in);
    int M,N,S;//行数列数非零个数
    M=sc.nextInt();
    N=sc.nextInt();
    S=sc.nextInt();
    T.m=M;
    T.n=N;
    T.t=S;//对行数列数非零元素个数分别赋值
    for(int i=0;i<S;i++)//存入非零元素
    { 
      T.data[i]=new Tubnod();//将指针实体化(分配空间)
      T.data[i].r=sc.nextInt();
      T.data[i].c=sc.nextInt();
      T.data[i].d=sc.nextInt();//存入每个非零元素的行号列号和值
      //System.out.println( T.data[i].c+" "+T.data[i].d+" "+T.data[i].r);
    }
    Tb.m=T.n;
    Tb.n=T.m;
    Tb.t=T.t;//转置
    int kl=0;
    for(int j=0;j<Tb.m;j++)//对转置后的矩阵进行遍历
    {
    	for(int k=0;k<S;k++)
    	{ //对新矩阵从上往下判断
    		if(T.data[k].c==j)//每个非零元素都与行号判断
    		{   Tb.data[kl]=new Tubnod();//实体化
    			Tb.data[kl].r=T.data[k].c;//行和列交换一下(转置非零元素)。
    			Tb.data[kl].c=T.data[k].r;
    			Tb.data[kl].d=T.data[k].d;
    			kl++;
    		}
    	}
    }
    
    for(int i=0;i<S;i++)//输出元素
    {
    	System.out.println(Tb.data[i].r+" "+Tb.data[i].c+" "+Tb.data[i].d);
    }
   }   
}
//定义两个class类储存必要信息
class txmatrs
{
	int m,n;//行数列数
	int t;//非零元素个数
	Tubnod data[]=new Tubnod[225];//225个指针,注意是指针,并没有分配空间!!!
	//每个数组都是Tubnod类型指针 
}
  class Tubnod
{
	int r,c;//存入行号和列号
	int d;//存入值
}

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值