0

我知道我们创建了一个链表数组,通过数组的索引表示每个顶点。但是我们如何存储与每个顶点相关的实际数据呢?例如,如果我有一个包含顶点的有向图:1. John 2. Mary 3. Sunny,边为 (John,Mary) 和 (Mary,Sunny),我们可以使用 ( 1,2) 和 (2,3) 作为边。但是我们在哪里存储与 1,2 和 3 相关的名称呢?

我做了什么?

我创建了一个类“vertexnode”,它存储了一个名称和一个指向“edgenode”类对象的指针。然后我创建了一个包含“vertexnode”类对象的数组。'edgenode' 类包含 1)此数组的索引,其中索引表示边的第二个端点,以及 2)指向 'edgenode' 的下一个对象的指针。然后我在图中添加了顶点(名称)和边(名称对)。程序运行正常。

我想知道这是否是一种有效的方法,或者最好将名称单独存储在一个数组中,或者还有其他方法?基本上,我想知道传统上是如何完成的?

PS:请避免在您的答案中使用 STL 或 Boost 或类似的东西。我是图表新手,我想知道事情在基本层面是如何工作的,而不是一些已经为我们准备好的功能。提前致谢。

4

1 回答 1

1

我认为这种情况下你有太多的课程,不知道这是否是最好的方法,但我会选择一个课程:

Vertex
{
   string name;
   List<Vertex> adjacent;
}

这样你就可以知道哪个顶点链接到哪个顶点,并且你只有一个类来存储所有内容。

但我会说最好的方法是满足您需求的方法,这取决于您要对图表做什么

于 2013-01-28T08:05:11.787 回答