1 Star 0 Fork 0

besti1923/JAVA

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
Graph.java 2.23 KB
一键复制 编辑 原始数据 按行查看 历史
yifei 提交于 5年前 . shiyan9
package text.java;
import java.util.Scanner;
/**
* 图类,在构造方法中完成图的构造
*/
public class Graph {
/**
* 图的节点个数
*/
int verNum;
/**
* 图的边的条数
*/
int edgeNum;
/**
* 图的邻接表中存储节点的数组
*/
Vertex[] verArray;
/**
* Graph类的构造方法,依次读取节点、边等信息,完成图的构建。
*/
public Graph() {
Scanner scan = new Scanner(System.in);
System.out.println("请选择你想要构建有向图(2)还是无向图(1): ");
int choose = scan.nextInt();
System.out.println("请输入节点个数和边的个数:");
verNum = scan.nextInt();
edgeNum = scan.nextInt();
verArray = new Vertex[verNum];
System.out.println("请依次输入节点的名称:");
for (int i=0;i<verNum;i++){
Vertex vertexmem = new Vertex();
vertexmem.verName = scan.next();
vertexmem.edgeLink = null;
verArray[i] = vertexmem;
}
System.out.println("请按‘头节点 尾节点 回车’的形式依次输入边的信息");
for (int i=0;i<edgeNum;i++){
String preName = scan.next();
String folName = scan.next();
Vertex preV = getVertex(preName);
Vertex folV = getVertex(folName);
if (preV == null || folV == null){
System.out.println("输入错误,输入了不存在的顶点!请重新输入");
i--;
continue;
}
Edge edge = new Edge();
edge.tailName = folName;
//将边加入到节点的链表中去
edge.broEdge = preV.edgeLink;//循环
preV.edgeLink = edge;//放在出始地的后面
//如果加上下面这段,则创建的是无向图,不加则是有向图
if(choose==1){
Edge edgeelse = new Edge();
edgeelse.tailName = preName;
edgeelse.broEdge = folV.edgeLink;
folV.edgeLink = edgeelse;}
}
}
/**
* 根据节点名称获取该节点
* @param verName 节点的名称
* @return 节点或null
*/
public Vertex getVertex(String verName){
for (int i=0;i<verNum;i++){
if (verArray[i].verName.equals(verName))
return verArray[i];
}
return null;
}
}
Loading...
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
Java
1
https://gitee.com/besti1923/java.git
git@gitee.com:besti1923/java.git
besti1923
java
JAVA
master

搜索帮助