基于java,编写算法,从键盘读入有向图的顶点和弧,创建有向图的邻接表存储结构
时间: 2024-02-12 17:05:13 浏览: 79
以下是基于Java语言的实现,实现了从键盘读入有向图的顶点和弧,并创建了有向图的邻接表存储结构。
```java
import java.util.*;
class Node {
int v; // 该邻接点的顶点编号
int w; // 该边的权值
Node next; // 下一个邻接点
public Node(int v, int w) {
this.v = v;
this.w = w;
this.next = null;
}
}
public class Main {
public static List<Node>[] createGraph(int n, int m) {
List<Node>[] adjList = new ArrayList[n+1];
// 初始化邻接表
for(int i=1; i<=n; i++) {
adjList[i] = new ArrayList<Node>();
}
// 读入m条弧,建立邻接表
Scanner sc = new Scanner(System.in);
for(int i=1; i<=m; i++) {
int u = sc.nextInt();
int v = sc.nextInt();
int w = sc.nextInt();
// 创建新的邻接点
Node newNode = new Node(v, w);
adjList[u].add(newNode);
}
return adjList;
}
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
int m = sc.nextInt();
List<Node>[] adjList = createGraph(n, m);
}
}
```
在上面的代码中,我们使用了`List<Node>[]`来表示邻接表,其中每个元素代表一个顶点,存储该顶点的所有邻接点。在创建邻接点时,我们直接通过`List`的`add`方法将新的邻接点添加到链表末尾,因为Java中`List`的底层实现是动态数组,尾部添加元素效率比头部插入高。
阅读全文