博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
行逻辑链接的顺序表实现稀疏矩阵的相乘(Java语言描述)
阅读量:7144 次
发布时间:2019-06-29

本文共 2311 字,大约阅读时间需要 7 分钟。

行逻辑链接,带行链接信息。程序有空指针BUG,至今未解决。还是C/C++适合描述算法数据结构。以后复杂的算法还是改用C/C++吧。

有BUG的代码,总有一天会换成没有BUG的。

package 行逻辑链接的顺序表实现稀疏矩阵的相乘;public class Triple
{ int row,col; T v; public Triple(){} public Triple(int row,int col, T v){ this.row = row; this.col = col; this.v = v; } }

 

package 行逻辑链接的顺序表实现稀疏矩阵的相乘;public class Mat {	final int MAXSIZE = 10;	int mu,nu,tu;	int rpos[] = new int[MAXSIZE + 1];//各行第一个非零元的位置表	Triple
data[] = new Triple[MAXSIZE + 1];//Java不支持泛型数组 public Mat(int mu,int nu,int tu){ this.mu = mu; this.nu = nu; this.tu = tu; for(int i=1; i<=MAXSIZE; i++) data[i] = new Triple(); } //三元组矩阵的输出 public void display(){ int i,j,k,m,n,count = 0; for(i=1; i<=mu; i++){ for(j=1; j<=nu; j++){ for(k=1; k<=tu; k++){ if(i==data[k].row && j==data[k].col){ System.out.print(data[k].v + " "); count = -1; break; } } if(count != -1) System.out.print("0 "); count = 0; } System.out.println(); } }}

 

package 行逻辑链接的顺序表实现稀疏矩阵的相乘;import java.util.*;public class MultMat {	public static void main(String[] args) {		int i,j,k,l;		Scanner scan = new Scanner(System.in);		System.out.println("请输入矩阵M1的行数,列数,非零元的个数:");		int mu1,nu1,tu1;		mu1 = scan.nextInt();		nu1 = scan.nextInt();		tu1 = scan.nextInt();		Mat M1 = new Mat(mu1,nu1,tu1);		//输入矩阵M1	    System.out.println("请输入矩阵M1的三元组:");		for(i=1; i<=tu1; i++){			M1.data[i].row = scan.nextInt();			M1.data[i].col = scan.nextInt();			M1.data[i].v = scan.nextInt();		}		System.out.println("输入的矩阵M1为:");		M1.display();		System.out.println("请输入矩阵M2的行数,列数,非零元的个数:");		int mu2,nu2,tu2;		mu2 = scan.nextInt();		nu2= scan.nextInt();		tu2 = scan.nextInt();		Mat M2 = new Mat(mu2,nu2,tu2);		//输入矩阵M2		System.out.println("请输入矩阵M2的三元组:");		for(i=1; i<=tu2; i++){			M2.data[i].row = scan.nextInt();			M2.data[i].col = scan.nextInt();			M2.data[i].v = scan.nextInt();		}		System.out.println("输入的矩阵M2为:");		M2.display();		Mat M3 = new Mat(mu1,nu2,10);		int ctemp[] = new int[mu1 + 1];		int arow,brow=0,tp,t;//M1,M2的行数计数器				/*M1.rpos[1] = 1;		M1.rpos[2] = 3;		M1.rpos[3] = 4;		M2.rpos[1] = 1;		M2.rpos[2] = 2;		M2.rpos[3] = 3;		M2.rpos[4] = 5;*/				int num1[] = new int[mu1+10];		int col1,row1,t1;		for(col1=1; col1<=mu1; col1++){			num1[col1] = 0;		}		for(t1=1; t1<=mu1; t1++){			num1[M1.data[t1].row]++;		}		for(i=1; i

 

转载地址:http://ypgrl.baihongyu.com/

你可能感兴趣的文章
微信公众平台开发(64)航班动态
查看>>
获取真机使用的语言
查看>>
[Lydsy2017年4月月赛]抵制克苏恩题解
查看>>
8-5 泛型类型擦除
查看>>
正文处理命令及tar命令
查看>>
GDI+ 绘制多行文本,自动换行。
查看>>
[转载] ASCII、UTF8、Uncicode编码下的中英文字符大小
查看>>
实习第三周小记-----生活在于经历 分类: 程序人生 ...
查看>>
Leetcode题目:Minimum Depth of Binary Tree
查看>>
从微软官网下载联机入门丛书
查看>>
PHP三种访问控制模式(public、protected、private)解析
查看>>
python numpty 中shape的用法
查看>>
浅谈C#中的结构
查看>>
使用单元素枚举实现单例
查看>>
前端基本知识
查看>>
将excel中的数据转为json格式
查看>>
字典操作
查看>>
使用source创建一个新项目(将本地项目文件和github远程库链接)
查看>>
运行问题,如何修改APACHE的监听端口和密码
查看>>
Solaris服务管理
查看>>