常见的图的数据表示法
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

1374

被折叠的 条评论
为什么被折叠?



