图表可以作为列表实现吗?

时间:2014-11-27 02:00:55

标签: c list data-structures graph

老师让我在图表课上实施伦敦地铁的环线。如我所见,黄线可以表示为图形,也可以表示为圆形链表。

Circle line

在我的最后一个图算法中,我创建了这个结构:

struct graph { int info; struct graph *edge[3]; };

如下所示实施Circle Line图是正确的吗?或者我会把它作为链表而不是图表?

struct graph{ int info; struct graph *next; struct graph *prev; }

1 个答案:

答案 0 :(得分:1)

我会制作一个循环的双向链表,就像你的第二个建议一样。我认为这是第一个建议。但只有每个对象都有2个顶点。

链表是一种列表btw。

如果你有一个可变数量的顶点,你可以像这样使用可变数量的指针:

struct graph {
    int info;
    struct graph **edge;
};

然后将其分配给您需要的任何数量,例如,如果您想要一个具有6条边的节点,您可以这样做:

struct graph my_graph;

my_graph.edge = malloc(6 * sizeof(my_graph *));
if (my_graph.edge == NULL) {
    // allocation error
} 

从这里你可以将6条边连接到其他对象。