Попытка составить список смежности, используя список ссылок и векторов

Я пытаюсь выяснить, как составить список смежности, но мне трудно понять, что мне нужно делать. У меня есть этот код 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 ++, пожалуйста?

1

Решение

Джава:

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. Поскольку w и v в addEdge должны быть меньше, чем V (V — это int), иначе это приведет к переполнению диапазона массива.

3

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector