package com.Test.Graph; import java.util.Scanner; public class NewGraph { private int numVertex; private int numEdge; Vertex[] vertexList=new Vertex[100]; public NewGraph(){ intitalGraph(); printGraph(); } public class Vertex{ int index; String name; Vertex nextVertex; Vertex preVertex; //MinPathBFS专用 boolean isVisited=false; //访问过设置为true public Vertex(int index){ this.index=index; } public Vertex(String name){ this.name=name; } } public Vertex getVertex(String item) { for (int i=0;i<numVertex;i++){ if (vertexList[i].name.equals(item)) return vertexList[i]; } return null; } public Integer getIndex(String item){ for (int i=0;i<numVertex;i++){ if (vertexList[i].name.equals(item)) return i; } return null; } private void intitalGraph(){ Scanner scanner=new Scanner(System.in); System.out.println("Please enter the Graph' num of Vertex and num of Edge: "); numVertex=scanner.nextInt(); numEdge=scanner.nextInt(); System.out.println("enter all vertex :"); for (int i=0;i<numVertex;i++){ vertexList[i]=new Vertex(scanner.next()); } System.out.println("enter the the begining Vertex and it' following Vertex: "); for (int i=0;i<numEdge;i++){ Vertex v1=getVertex(scanner.next()); Vertex v2=new Vertex(getIndex(scanner.next())); v2.nextVertex=v1.nextVertex; v1.nextVertex=v2; } } public void printGraph(){ for (int i=0;i<numVertex;i++){ Vertex vertex=vertexList[i]; System.out.print(vertex.name); while (vertex.nextVertex!=null){ vertex=vertex.nextVertex; System.out.print(" -> "+vertexList[vertex.index].name); } System.out.println(); } } public boolean hasVertex(String item){ for (int i=0;i<numVertex;i++){ if (vertexList[i].name.equals(item)) return true; } return false; } }
用邻接表实现的Graph(用于BFS最小路径)
最新推荐文章于 2026-08-10 10:34:15 发布
本文介绍了一个简单的图数据结构实现方法,使用Java语言定义了顶点(Vertex)类,并通过顶点数组构建图。文章展示了如何初始化图,添加顶点及其连接关系,并提供了打印图的方法。

5054

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



