说明
分别采用了深度优先算法和广度优先算法实现
运行截图
代码实现:
import java.util.LinkedList;
import java.util.Queue;
import java.util.Scanner;
/**
* Created by IntelliJ IDEA
*
* @author manzuo
* @date 2018/12/14 23:52
* 以邻接表的作为存储方式,分别以广度优先和深度优先的算法判别有向图G是否存在顶点Vi到定点Vj的路径
*/
public class AdjacencyList {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
CreateGraph createGraph = new CreateGraph();
createGraph.initGraph();
createGraph.outputGraph();
int i,j;
System.out.println("输入i,j 的值");
i = in.nextInt();
j = in.nextInt();
createGraph.DFSTravel(i,j);
createGraph.BFSTravel(i,j);
}
}
class Vertex{
//顶点类
String vername;//顶点的名称
Vertex nextNode;//下一个顶点
}
class Graph{
//图类
Vertex[] vertices;//顶点数组,存放所有顶点
int verNum = 0;//顶点数量
int edgeNum = 0;//边的数量
}
class CreateGraph{
Scanner in = new Scanner(System.in);
static private Graph graph = new Graph();//创建一个没有顶点的空图
static private boolean[] visited;//遍历辅助数组,标记该顶点是否访问过
static private boolean flag;//标记是否有Vi到Vj的路径
public Vertex getVertex(String str){
//根据指定的顶点名称str,返回对应的顶点对象
//如果顶点不存在,返回null
for(int i = 1;i<=graph.verNum;i++){
if(graph.vertices[i].vername.equals