我正在试图找出如何制作邻接列表,但我无法理解我需要做什么。我有这个Java代码:
public class Graph
{
private final int V;
private Bag<Integer>[] adj;
public Graph(int V)
{
this.V = V;
adj = (Bag<Integer>[]) new Bag[V];
for (int v = 0; v < V; v++)
adj[v] = new Bag<Integer>();
}
public void addEdge(int v, int w)
{
adj[v].add(w);
adj[w].add(v);
}
但我正在尝试理解它并将其转换为c ++。我不确定的主要部分是
adj = (Bag<Integer>[]) new Bag[V];
for (int v = 0; v < V; v++)
adj[v] = new Bag<Integer>();
有人可以帮忙将此转移到c ++吗?
答案 0 :(得分:3)
爪哇:
adj = (Bag<Integer>[]) new Bag[V];
for (int v = 0; v < V; v++)
adj[v] = new Bag<Integer>();
C ++:
vector<vector<int>> adj;
for(int v=0;v<V;v++) adj.push_back(vector<int>());
爪哇:
public void addEdge(int v, int w)
{
adj[v].add(w);
adj[w].add(v);
}
C ++:
public void addEdge(int v, int w)
{
adj[v].push_back(w);
adj[w].push_back(v);
}
还有一件事:BigInteger可以存储比int大得多的数字。但是没有必要使用BigInteger。因为addEdge中的w和v必须小于V(V是int),否则它将溢出数组的范围。