栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Java数据结构与算法(图)

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Java数据结构与算法(图)

图是一种数据结构,其中结点可以具有零个或者多个相邻元素,两个结点之间的链接称为边,结点也可以称为顶点
当我们用来表示多对多关系时,就需要用到图
图的表示方式:
图的表示方式有两种:二维数组表示(邻接矩阵);链表表示(邻接表)

邻接矩阵是表示图形中顶点之间相邻关系的矩阵,对于n个顶点的图而言,矩阵的row和col表示的是1…n个点

邻接表
(1)邻接矩阵需要为每个顶点都分配n个边的空间,其实右很多都是不存在,会造成空间的一定损失
(2)邻接表的实现只关心存在的边,不关心不存在的边,因此没有空间浪费,邻接表由数组+链表组成

邻接表里面里存放的是当前结点和那些结点有关联

代码实现:

public class Graph {
    private ArrayList arrayList;
    private int[][] edges;
    //图中边的数目
    private int numberOfEdge;

    

    public Graph(int numberOfEdge) {
        //初始化矩阵和arrayList
        edges = new int[numberOfEdge][numberOfEdge];
        arrayList = new ArrayList<>(numberOfEdge);
        numberOfEdge = 0;
    }
    //插入结点
    public void insertList(String s) {
        arrayList.add(s);
    }
    //添加边
    public void addEdge(int v1,int v2,int weight) {
        edges[v1][v2] = weight;
        edges[v2][v1] = weight;
        numberOfEdge++;
    }
    //返回边的个数
    public int getNumberOfEdge() {
        return numberOfEdge;
    }
    //返回结点的个数
    public int getEdgeNumber() {
        return arrayList.size();
    }
    //返回结点为i里存的数据
    public String getValue(int i) {
        return arrayList.get(i);
    }
    //返回某两个点之间的权值
    public int getWeight(int v1,int v2) {
        return edges[v1][v2];
    }
    //显示整个图对应的矩阵
    public void show() {
        for(int i = 0;i < arrayList.size();i++) {
            for (int j = 0;j < arrayList.size();j++) {
                System.out.print(edges[i][j]+" ");
            }
            System.out.println();
        }
    }

}
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/571661.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号