图结构-图的数据表示法(java)

常见的图的数据表示法

1.邻接矩阵表示法:用二维数组存储图的信息,数组中的对角线为0,表示不存在顶点到自身的边。若两个顶点之间有一条弧,则邻接矩阵中对应的元素为1,否则为0。该方法在存储稀疏图时效率较高。
2.关联矩阵表示法:与邻接矩阵类似,但在关联矩阵中,每个顶点的每条边对应的元素为1或-1,表示该边的终点或起点。该方法在存储密集图时效率较高
3.邻接表表示法:用链表存储图的信息,每个顶点对应一个链表,链表中存储了与该顶点相邻的所有顶点。该方法在查找顶点相邻的边时效率较高。
4.压缩邻接表表示法:将邻接表表示法中的每个顶点的链表进行压缩,即将相邻的顶点所在的边存储在链表的元素中。该方法在存储稠密图时效率较高。

自定义一种数据结构来表示图。

思路:图有点和线组成,线上又可以有权重,那我们先把线定义出来,在定义出点,最后把线和点组成一张图,这种结构会比较清晰,比邻接矩阵法之类的更好理解。

1.先定义出线段

/**
 * 线
 */
public class Edge {
   
   

    /**
     * 线的权重
     */
    private int weight;
    /**
     * 这个是点的结构 先理解为头节点
     */
    private Node from;
    /**
     * 理解为尾节点或者出节点。
     */
    private Node to;


    public Edge(int weight, Node from, Node to) {
   
   
        this.weight = weight;
        this.from = from;
        this.to = to;
    }
}

2.定义出点信息

/**
 * 点的数据结构
 */
public class Node {
   
   
    public int value;
    //出度
    public int out
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值