如何从顶点创建图形?

How to create graph from vertex?

我有一个连接顶点的列表。

我的问题是如何创建和存储表示此列表的图形?

例如

5
2 4 5
1 3 4
2 4 5
1 2 3 5
1 3 4

1 连接到 2、4、5

2 -> 1、3、4

等等..

这里有2个(相同的)表示。

我的第二个问题是如何获得该图的所有表示(在这张图片中我展示了 2 个,它们是相同的) 对于一个顶点列表只存在一个图形表示?如果更多,如何获得所有这些?

图片相同,图纸不同

5 means how many lines
1 > 2, 4, 5
2 > 1, 3, 4
3 > 2, 4, 5
4 > 1, 2, 3, 5
5 > 1, 3, 4

(我很傻,所以我需要在记事本中输入)。

#include <stdio.h>

class Cl_Graph;
class Cl_Chain;

class Cl_Vertex
{
friend Cl_Graph;
private:
    Cl_Chain* mp_linkedTo;
    Cl_Vertex();
    void f_addLink(Cl_Vertex* in_link);
};

Cl_Vertex::Cl_Vertex()
{
    mp_linkedTo= NULL;
}

class Cl_Graph
{
private:
    int m_size;
    Cl_Vertex* pm_vertexTable;
public:
    Cl_Graph(int in_size);
    void f_addLink(int in_index, int in_linkWith);
};

Cl_Graph::Cl_Graph(int in_size)
{
    pm_vertexTable= new Cl_Vertex[m_size= in_size];
}

void Cl_Graph::f_addLink(int in_index, int in_linkWith)
{
    if (in_index< m_size && in_linkWith< m_size)
    {
        pm_vertexTable[in_index].f_addLink(pm_vertexTable[in_linkWith]);
    }
}

int main(int argc, char** argv)
{
    Cl_Graph graph(5);
    graph.f_addLink(1, 2);
    graph.f_addLink(1, 4);
    graph.f_addLink(1, 5);
    // ...
    return 0;
}

你可以从这样的事情开始。您甚至可以键入一个函数,该函数会将顶点链作为参数添加到图形中,而不是数组,它可以具有 link 链的链:p 祝你好运!