⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 plus_spar.java

📁 三元组表的方式实现两个矩阵的加法运算
💻 JAVA
字号:
/* 用三元组表的方式实现两个矩阵的加法运算
  	*/
public class  plus_spar  
{   
	//已知的两个矩阵A和B
	public int A[][];
	public int B[][];
	public void plus()
	   {  
		  //入口判断,若A和B不同形,则不能进行加法运算
		  if (A.length!=B.length)
		  {  System.out.println("两个矩阵不同形,不能相加!");
		  }
		  else 
		   {  
			  //将矩阵A用三元组表表示
			  System.out.println("矩阵A: ");
                          Sparse1 a=new Sparse1(A);
                       			  	  
                         
			  //将矩阵B用三元组表表示
			  System.out.println("矩阵B: ");
			  Sparse1 b=new Sparse1(B);
			
			  //创建一个三元组表c,用来记录加法运算的结果,初始化长度为其最长,即结果矩阵中没有零元素时的长度
			  Sparse1 c=new Sparse1(A.length*A[0].length);
                         
                          int x=0;  //用来标记三元组表c中可用空间的起始地址 
			  boolean existing=false; //用来标记a,b中有没有相同位置的元素以相加,初始化为没有,即false
			  //利用b处理a,将a的各元素做加法运算,结果放在c中
			  for (int i=0;i<a.table.length ;i++ )
			  { 
			  	
				  for (int j=0;j<b.table.length ;j++ )
				  {   
				
					    if (a.table[i].row==b.table[j].row && a.table[i].column==b.table[j].column && (a.table[i].data+b.table[j].data)!=0)
					    {  
					    	
					    	c.table[x].row=a.table[i].row;
						   
						   c.table[x].column=a.table[i].column;
						   c.table[x].data=a.table[i].data+b.table[j].data;
						   b.table[j].data=0;  //标记b中作过运算的元素
						   x++;  
						   existing=true;
						}
				  }
				  if (existing==false)
				  {     
					  c.table[x].row=a.table[i].row;
					  c.table[x].column=a.table[i].column;
					  c.table[x].data=a.table[i].data;  //实际上是a的元素和0相加
                                   x++;
				  }
			  }
			  //将b中没有标记的元素与0相加放在c中
			  for (int i=0;i<b.table.length ;i++ )
			  {  
				   if (b.table[i].data!=0)
				   {  
					  c.table[x].row=b.table[i].row;
					  c.table[x].column=b.table[i].column;
					  c.table[x].data=b.table[i].data;
					  x++; 
				   }
			  }
			  System.out.println("两个矩阵相加的结果是:");
			  c.output(A.length,A[0].length);
           }
	   }
	public static void main(String[] args) 
   	{   
		plus_spar p1=new plus_spar();
		//读入已知矩阵A,B的值
		int a[][]={{0,2,3},
			       {3,2,1},
			       {3,5,3}
			    
			};

		int b[][]={{0,5,5},
			       {4,1,1},
			       {3,1,3}
			       
			       };
			   
		p1.A=a;
		p1.B=b;
		p1.plus();   //做矩阵加法运算并输出结果
		
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -