作者热门文章
- 使用 Spring Initializr 创建 Spring Boot 应用程序
- 在Spring Boot中配置Cassandra
- 在 Spring Boot 上配置 Tomcat 连接池
- 将Camel消息路由到嵌入WildFly的Artemis上
package graph;
import java.util.Scanner;
public class DFSAL {
static final int MaxVnum = 100; // 顶点数最大值
// 访问标志数组,其初值为"false"
static Boolean visited[] = new Boolean[MaxVnum];
static {
for (int i = 0; i < visited.length; i++) {
visited[i] = false;
}
}
static int locatevex(DFSAL.ALGraph G, char x) {
for (int i = 0; i < G.vexnum; i++) // 查找顶点信息的下标
if (x == G.Vex[i].data)
return i;
return -1; // 没找到
}
// 插入一条边
static void insertedge(DFSAL.ALGraph G, int i, int j) {
graph.AdjNode s = new graph.AdjNode();
s.v = j;
s.next = G.Vex[i].first;
G.Vex[i].first = s;
}
// 创建有向图邻接表
static void CreateALGraph(DFSAL.ALGraph G) {
int i, j;
char u, v;
System.out.println("请输入顶点数和边数:");
Scanner scanner = new Scanner(System.in);
G.vexnum = scanner.nextInt();
G.edgenum = scanner.nextInt();
System.out.println("请输入顶点信息:");
for (i = 0; i < G.vexnum; i++)//输入顶点信息,存入顶点信息数组
G.Vex[i].data = scanner.next().charAt(0);
for (i = 0; i < G.vexnum; i++)
G.Vex[i].first = null;
System.out.println("请依次输入每条边的两个顶点u,v");
while (G.edgenum-- > 0) {
u = scanner.next().charAt(0);
v = scanner.next().charAt(0);
i = locatevex(G, u); // 查找顶点 u 的存储下标
j = locatevex(G, v); // 查找顶点 v 的存储下标
if (i != -1 && j != -1)
insertedge(G, i, j);
else {
System.out.println("输入顶点信息错!请重新输入!");
G.edgenum++; // 本次输入不算
}
}
}
// 输出邻接表
static void printg(DFSAL.ALGraph G) {
System.out.println("----------邻接表如下:----------");
for (int i = 0; i < G.vexnum; i++) {
graph.AdjNode t = G.Vex[i].first;
System.out.print(G.Vex[i].data + ": ");
while (t != null) {
System.out.print("[" + t.v + "]\t");
t = t.next;
}
System.out.println();
}
}
static void dfsAl(ALGraph G, int v) {//基于邻接表的深度优先遍历
int w;
graph.AdjNode p;
System.out.println(G.Vex[v].data + "\t");
visited[v] = true;
p = G.Vex[v].first;
// 依次检查 v 的所有邻接点
while (p != null) {
w = p.v; // w 为 v 的邻接点
if (!visited[w]) // w 未被访问
dfsAl(G, w);// 从 w 出发,递归深度优先遍历
p = p.next;
}
}
public static void main(String[] args) {
DFSAL.ALGraph G = new DFSAL.ALGraph();
for (int i = 0; i < G.Vex.length; i++) {
G.Vex[i] = new graph.VexNode();
}
CreateALGraph(G); // 创建有向图邻接表
printg(G); // 输出邻接表
System.out.println("请输入遍历图的起始点:");
Scanner scanner = new Scanner(System.in);
char c = scanner.next().charAt(0);
int v = locatevex(G, c);//查找顶点u的存储下标
if (v != -1) {
System.out.println("广度优先搜索遍历图结果:");
dfsAl(G, v);
} else
System.out.println("输入顶点信息错!请重新输入!");
}
// 定义邻接点类型
static class AdjNode {
int v; // 邻接点下标
graph.AdjNode next; // 指向下一个邻接点
}
// 定义顶点类型
static class VexNode {
char data; // VexType为顶点的数据类型,根据需要定义
graph.AdjNode first; // 指向第一个邻接点
}
// 定义邻接表类型
static class ALGraph {
graph.VexNode Vex[] = new graph.VexNode[CreateALGraph.MaxVnum];
int vexnum; // 顶点数
int edgenum; // 边数
}
}
我在 ma 应用程序中使用 Jqgrid 树 View 模型,我可以看到它显示错误,因为不支持对象或属性我已经包含了 grid.Treeview.js 和其他 Jqgrid 脚本文件。我不知道可能是什
我正在尝试使用图中所示的符号在 matlab 上实现 Freeman Chain Code [4 adjacency]: 我的代码为我测试过的多个小矩阵提供了正确的链码。但是,当我在我的实际图像文件上
我有一张表,其中包含世界上所有地理位置及其关系的位置。 这是一个显示层次结构的示例。你会看到数据实际上存储为所有三个 枚举路径 邻接表 嵌套集 数据显然也不会改变。下面是英格兰布莱顿位置的直系祖先示例
我正在尝试从邻接树模型(id、parent_id)中的 MySQL 数据库中计算/创建或生成 PHP 目录。到目前为止,这是我在回显输出时所取得的成就。 1. Category 1 1 Subc
我知道 std::vector在内部连续存储它的数据(除非它是 std::vector )都在旧的 C++03 中标准和新的C++11 . 处理此问题并引用标准的好 stackoverflow 问题:
Development language and DB: PHP/MySQL 我有一张 geo_places 表,其中包含大约 800 万个地理位置。 这些地方都是分层次的,我用 parent_id
过去几个小时我一直在尝试在网上找到这个问题的解决方案。我找到了很多关于如何从嵌套集合转换为邻接的例子......但很少有相反的例子。我发现的示例要么不起作用,要么使用 MySQL 过程。不幸的是,我不
我是一名优秀的程序员,十分优秀!