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

Adding a vertex to a graph using adjacency list

本文关键字:顶点 添加 图形 列表      更新时间:2023-10-16

我是编码新手,这是我第一次尝试图形。基本上,我必须使用图表找到两个位置之间的最短路径。到达时间和离开时间将提供给我们。我在创建图表时遇到问题。在 void addloc 函数中,我想在每次添加新位置时将位置添加到邻接列表数组中。我该怎么做?如果有人能告诉我如何将城市保留为字符串而不是 int,那将非常有帮助。如果我将它们保留为字符串,则无法使用该列表,因为它仅将 int 或枚举作为输入。

' 使用命名空间标准;

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);
}`

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

flight = new graph;

您应该初始化新城市的邻接列表。请参阅此处:C++列表和指针

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