我是编码的新手,这是我对图表的第一次尝试。基本上我必须使用图表找到两个位置之间的最短路径。到达时间和出发时间将给予我们。我在创建图表时遇到问题。在void addloc函数中,我想在每次添加新位置时将位置添加到邻接列表数组中。我怎么做?如果有人能告诉我如何将城市保持为字符串而不是int,那将是非常有用的。如果我将它们保留为字符串,我就不能使用列表,因为它只需要int或enum作为输入。
` 使用namespace 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 :(得分:0)
在函数void addloc(int a,graph *flight)
中,您正在初始化图表本身。
flight = new graph;
您应该初始化新城市的邻接列表。见这里:C++ lists and pointers
您可以使用地图以字符串形式存储城市名称。