问题描述
稀疏矩阵是指那些多数元素为零的矩阵,利用“稀疏”特点进行存储和计算可以大大节省存储空间,提高计算效率。实现一个能进行稀疏矩阵基本运算的运算器
基本要求
以“带行逻辑连接信息”的三元组顺序表表示系数矩阵,实现两个矩阵相加、相减和想乘的运算。稀疏矩阵的输入形式采用三元组表示,而运算结果的矩阵以通常阵列形式列出
运行截图
数据输入
输出结果
代码实现
import java.util.Arrays;
import java.util.Scanner;
public class matrixTest {
public static void main(String[] args) throws Exception {
Matrix M = new Matrix();
System.out.println("创建矩阵M:");
M.CreateMatrix();
Matrix N = new Matrix();
System.out.println("创建矩阵N:");
N.CreateMatrix();
System.out.println("M:");
M.PrintMatrix();
System.out.println("N: ");
N.PrintMatrix();
Matrix Q = Matrix.add(M,N);
System.out.println("M+N:");
Q.PrintMatrix();
Q = Matrix.sub(M,N);
System.out.println("M-N:");
Q.PrintMatrix();
Q = Matrix.multiply(M,N);
System.out.println("M*N: ");
Q.PrintMatrix();
}
}
class Triple{
//三元组
int i,j;//非零元的行下标和列下标
int e;//非零元的数值
}
class Matrix{
Triple[] triples;//非零元三组表
int mu,nu,tu;//矩阵的行数列数和非零元的个数
int[] rops;//各行第一个非零元的在tripls数组里的位置表
public void CreateMatrix() throws Exception{
Scanner in = new Scanner(System.in);
System.out.println("请输入矩阵的行数、列数,以及非零元的个数");
mu = in.nextInt();
nu = in.nextInt();
tu = in.nextInt();
if(tu>mu*nu) throw new Exception("输入非法,非零元个数大于矩阵元素的个数");
triples = new Triple[tu+1];
Arrays.fill(triples,null);
rops = new int[mu