图
为什么要有图?
线性表局限于一个直接前驱和一个直接后继的关系,树也只能有一个直接前驱也就是父节点
当我们需要表示一种多对多的关系就需要用到图。
图是一种数据结构,其中结点可以具有零个或多个相邻元素。两个结点之间的连接称为边。 结点也可以称为顶点。如图:
图的常用概念:
图的表示方式
图有两种表示方式:邻接矩阵和邻接表。
-
邻接矩阵
-
邻接表
创建图
采用邻接矩阵的方法
思路:用邻接矩阵创建图时,需要以下属性,一个list,用来存放图的所有顶点,顶点用字符串表示;一个二维数组int[][],用来表示图的关系,0表示顶点之间不连通,1表示连通;一个数int,用来存放图的边的总数。
创建图时,需分别创建顶点和创建每一条边。
package graph;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.LinkedList;
import java.util.List;
/**
* 无相图
*/
public class graph {
public List<String> vertexList;//存放顶点
public int[][] edges;//存放图
public int numOfEdges;//存放图的边的数量
public boolean[] visit;//存放是否被访问过
public static void main(String[] args) {
String[] vertexs={
"1","2","3","4","5","6","7","8"};
graph graph=new graph(8);
for(String n:vertexs){
graph.insertVertex(n);
}
graph.insertEdges(0,1,1);
graph.insertEdges(0,2,