目录
一、图基本介绍
1.1 为什么要有图
1.2 图的举例说明
1.3 图的常用概念
二、图的表示方式
图的表示方式有2种:二维数组表示(邻接矩阵)和链表表示(邻接表)
2.1 邻接矩阵
2.2 邻接表
2.3 图的快速入门案例
package com.zengwen.graph;
import java.util.ArrayList;
import java.util.Arrays;
public class Graph {
private ArrayList<String> vertexList;//存储顶点集合
private int[][] edges;//存储图对应的邻接矩阵
private int numOfEdges;//表示边的数目
public Graph(int n){
//初始化矩阵和vertexList
edges = new int[n][n];
vertexList = new ArrayList<String>(n);
numOfEdges = 0;
}
//图中常用的方法
//显示顶点个数
public int getNumOfVertex(){
return vertexList.size();
}
//显示边的个数
public int getNumOfEdges(){
return numOfEdges;
}
//显示顶点
public String getValueByIndex(int i){
return vertexList.get(i);
}
//显示权值
public int getWeight(int v1, int v2){
return edges[v1][v2];
}
//显示图
public void showGraph(){
for (int[] link :
edges) {
System.err.println(Arrays.toString(link));
}
}
//插入结点
public void insertVertex(String vertex){
vertexList.add(vertex);
}
/**
*添加边
* @param v1 第一个顶点下标
* @param v2 第二个顶点下标
* @param weight 权值
*/
public void insertEdge(int v1, int v2, int weight){
edges[v1][v2] = weight;
edges[v2][v1] = weight;
numOfEdges++;
}
public static void main(String[] args) {
int n = 5;//顶点个数
String vertexValue[] = {"A","B","C","D","E"};
//创建图对象
Graph graph = new Graph(n);
for (String vertex : vertexValue){
graph.insertVertex(vertex);
}
graph.insertEdge(0,1,1);
graph.insertEdge(0,2,1);
graph.insertEdge(1,2,1);
graph.insertEdge(1,3,1);
graph.insertEdge(1,4,1);
graph.showGraph();
}
}