Добавление вершины в граф с использованием списка смежности

Я новичок в кодировании, и это моя первая попытка на графиках. По сути, я должен найти кратчайший путь между двумя точками с помощью графиков. Время прибытия и время отправления будет предоставлено нам. У меня проблема с созданием графа. В функции void addloc я хочу добавлять местоположение в массив списка смежности каждый раз, когда добавляю новое местоположение. Как я могу это сделать? Также было бы очень полезно, если бы кто-то мог сказать мне, как я могу сохранить города в виде строки вместо int. Если я храню их как строки, я не могу использовать список, так как он принимает только int или enum в качестве входных данных.

`
использование пространства имен std;

class location
{
public:
int city;
};

class flightconnect
{
int arvtime;
int deptime;
int arvcity;
public:
flightconnect(int _a, int _d, int _c)  { arvtime = _a;  deptime = _d;  arvcity = _c;}
int getdeptime()        {  return deptime; }
int getarvtime()        {  return arvtime; }
int getarvcity()        {  return arvcity; }
};

struct graph
{
location* vertex;
list<flightconnect> *adj;
};

void addloc(int a,graph *flight)
{
flight = new graph;
flight->vertex->city=a;
//what should come in the next line?
flight->adj = flight->adj.append(a);
}

void addflight(int at,int dt,int a,int d,graph *flight)
{
flightconnect node(at,dt,d);
flight->adj[a].push_back(node);
}`

0

Решение

В функции void addloc(int a,graph *flight)Вы инициализируете сам график.

flight = new graph;

Вы должны инициализировать список смежности для нового города. Посмотреть здесь: C ++ списки и указатели

Вы можете использовать карту для хранения названий городов в строке.

0

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

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

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