吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 2870|回复: 3
收起左侧

[Java 转载] javaGUI实现最小生成树

  [复制链接]
DirkZh 发表于 2018-10-19 18:55
前一阵子看到新人被踢,身为小白的我瑟瑟发抖
之前发了三个帖子,违规了两个,但是为了在这里活下去。
我还是舔着脸来了。
这篇推文主要介绍的是用Prim和Kruskal算法实现最小生成树,同时界面显示实现过程。采用的java技术点主要包括:
        1.IO流读取txt文件,获取所用数据;读取图片,为主页添加title。
        2.javaGUI中Jframe窗口和Jpanel面板的基本参数设计以及Graphics画笔画出点与距离等数据。        3.List<Object>集合,用来存储边的对象

      上图是此项目的包结构:1.com.kruskal:        Edge.java:边的类,含有属性包括边的开始点begin,边的结束点end,边的权值weight.
        Kruskal.java:主要实现Kruskal算法的类
        KruskalMap:用来实现Kruskal算法的界面
2.com.prim:        Prim.java:实现Prim算法的类
        PrimMap.java:实现Prim算法的界面
3.com.paint:        PaintLine:用来画边的类
        PaintPoint:用来画点的类
4.com.res:        ReadRes.java:主要实现读取txt文件,返回二维数组
5.com.test:        MainApp.java:主类,同时含有主界面,用来选择Prim或Kruskal算法。
6.JRE System Library:        工程创建时便有,主要存放J2SE的标准jar包。7.JUtil4:        coding过程中导入的测试包
8.img:        含有工程中所需要的图片
9.txt:        包含TXT文件,是工程中的数据源

接下来提取主要代码仅供大家学习参考:
主类的实现及界面展示:
  



    Prim算法主要实现思想:找到一个点出发,寻找最小连接边加入这个点,组成一个集合,在找剩下的最小连接边加入集合...直到找不到最小连接边。     在这个类中需要提及的是,我们根据点击次数进行遍历,每次返回需要画的点和边进行绘制。
    Kruskal算法主要实现思想:根据边的权值排序,从最小边出发依次遍历,不成环便加入最小树...直到找不到最小连接边。     在这个类中需要提及的是:不同于Prim算法,这个算法使用了集合,对象,简化了编程。    public int find(int[] parent, int index) {        while (parent[index] > 0) {            index = parent[index];        }        return index;    }    这个方法是此算法的精髓所在,主要用来判断是否成环,思想就是寻找一条边的两个点的终点是否相等,相等便成了环。
2018-10-19_084246.png QQ截图20181019084359.png
完整程序下载链接:
资源下载链接.docx (54.4 KB, 下载次数: 13)

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

默之 发表于 2018-10-19 19:02
秦皇岛的?
 楼主| DirkZh 发表于 2018-10-19 19:04
yuanmengxiaozi 发表于 2018-10-25 20:41
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-15 19:23

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表