使用邻接列表将顶点添加到图形中

时间:2013-11-17 06:47:45

标签: c++ data-structures graph adjacency-list

我是编码的新手,这是我对图表的第一次尝试。基本上我必须使用图表找到两个位置之间的最短路径。到达时间和出发时间将给予我们。我在创建图表时遇到问题。在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);
}`

1 个答案:

答案 0 :(得分:0)

在函数void addloc(int a,graph *flight)中,您正在初始化图表本身。

flight = new graph;

您应该初始化新城市的邻接列表。见这里:C++ lists and pointers

您可以使用地图以字符串形式存储城市名称。