1

我试图弄清楚如何制作邻接列表,但无法理解我需要做什么。我有这个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++ 吗?

4

1 回答 1

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 is a int) 否则会溢出数组的范围。

于 2013-05-10T01:18:43.073 回答