当前位置:编程学习 > JAVA >>

java 稀疏矩阵的中三元表的相加 头痛好多天了= =

这是数据结构的一个题目 构建稀疏矩阵 将非零数值的信息存往三元组中去 并将两个矩阵相加得出一个新矩阵
import java.util.Scanner;

class Trituple
{
public int row;
public int col;
public int value;
public Trituple(int r,int c,int v)
{
row=r;
col=c;
value=v;
}
}
public class Juzhen {

/**
 * @param args
 */
int row;
int col;
int size;
public Trituple arr[]=new Trituple[100];

public Juzhen(int MRow,int MCol,int MSize)
{
row=MRow;
col=MCol;
size=MSize;
//Trituple arr[]=new Trituple[100];
int r=0;
int c=0;
int v=0;
for(int i=0;i<size;i++)
{
System.out.println("非零值的行号");
Scanner rr=new Scanner(System.in);
r=rr.nextInt();
System.out.println("非零值的列号");
Scanner cc=new Scanner(System.in);
c=cc.nextInt();
System.out.println("非零值为:");
Scanner vv=new Scanner(System.in);
v=vv.nextInt();
Trituple t=new Trituple(r,c,v);
arr[i]=t;
}
}

public void show()
{
 int i,j,k;
 System.out.println("该稀疏矩阵为:");
 for(i=0;i<row;i++)
 {
 for(j=0;j<col;j++)
 {
 for(k=0;k<size;k++)
 if(i==arr[k].row&&j==arr[k].col)
 {
 System.out.print(arr[k].value+" ");
 break;
 }
 if(k==size)
 System.out.print(0+" ");
 }
 System.out.println();
 }
}
public  static void plus(Juzhen s1,Juzhen s2)
{
int  r,s,t ;      
r=s1.size;
for(t=0;t<s1.size;t++)
{
for(s=0;s<s2.size;s++)
{
if(s1.arr[t].row==s2.arr[s].row&&s1.arr[t].col==s2.arr[s].col)
{
s1.arr[t].value=s1.arr[t].value+s2.arr[s].value;
s2.arr[s].value=0;
//System.out.println(s2.arr[s].value);
//break;
}
}
}
 
for(s=0;s<s2.size;s++)
{
 if(s2.arr[s].value!=0)
{
 
s1.arr[r].row=s2.arr[s].row;
 
s1.arr[r].col=s2.arr[s].col;
s1.arr[r].value=s2.arr[s].value;
r++;
s1.size++;
}
 //else
//  break;
}
System.out.println("通过两矩阵相加后:");
s1.show();
}
public static void main(String[] args) {
// TODO Auto-generated method stub
System.out.println("请输入三元组的行数:");
Scanner rr=new Scanner(System.in);
int r=rr.nextInt();
System.out.println("请输入三元组的列数:");
Scanner cc=new Scanner(System.in);
int c=cc.nextInt();
System.out.println("请输入非零值的个数:");
Scanner ss=new Scanner(System.in);
int s=ss.nextInt();
Juzhen s1=new Juzhen(r,c,s);
    s1.show();
    ///////////////////////////////////////////////
    System.out.println("请输入三元组的行数:");
Scanner rr2=new Scanner(System.in);
int r2=rr2.nextInt();
System.out.println("请输入三元组的列数:");
Scanner cc2=new Scanner(System.in);
int c2=cc2.nextInt();
System.out.println("请输入非零值的个数:");
Scanner ss22=new Scanner(System.in);
int ss2=ss22.nextInt();
Juzhen s2=new Juzhen(r2,c2,ss2);
    s2.show();
    plus(s1,s2);
    
}
}
 
求大神的相助啊 
补充:Java ,  Java相关
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,