C ++中的图形实现

时间:2013-12-18 16:52:57

标签: c++ graph

我想在图表上做一些操作。在开始操作之前,我尝试构建图形。但我不确定我是否做得正确。你能说我是否朝着正确的方向前进? 输入将是这样的:

  • A
  • C
  • A B 1
  • A C 2
  • B C 3

我已将节点放入这样的char矢量中:

vector<char> nodes;

我已将边缘放入Edge矢量中:

class Edge
{
    private : 
    int length;
    char node1; 
    char node2;

    public : 
    Edge(int l, char n1, char n2);

};

3 个答案:

答案 0 :(得分:1)

您似乎正在寻找有效的解决方案。

据我所知,实现图形数据结构有两种规范。 第一个是边缘列表,这似乎是您选择的方法。图结构由具有可选权重的边列表表示。请注意,您可能需要向此添加更多内容,以获得更高效的结构,具体取决于图表的用途。例如,如果需要快速查找节点的所有邻居列表,则最好为每个事件节点存储边缘列表。

第二种方法是将图形表示为类似矩阵的结构,其中条目(i,j)是一个布尔值,表示从节点i到节点j是否存在边缘。

答案 1 :(得分:0)

首先,您需要一个简单的Node类。节点类通常包含子节点的链表(使用列表!)。在您的情况下,您使用带边的图形,因此您的节点应包含连接到子项的边的链接列表。此外,我不确定您使用char来引用节点的原因,您应该使用带有节点引用的Node类。

答案 2 :(得分:0)

这不是实现图表的有效方式。 顶点和边是不同的实体,因此它们需要由不同的数据结构表示。

类似于2个类:类Vertex和类Edge。

还必须使用循环依赖的概念。有关详细信息,请访问以下网站:

http://badboys.7p.com/notes/Graph%20-%20Linked%20Implementation%20(C++).htm