老师让我在图表课上实施伦敦地铁的环线。如我所见,黄线可以表示为图形,也可以表示为圆形链表。
在我的最后一个图算法中,我创建了这个结构:
struct graph {
int info;
struct graph *edge[3];
};
如下所示实施Circle Line图是正确的吗?或者我会把它作为链表而不是图表?
struct graph{
int info;
struct graph *next;
struct graph *prev;
}
答案 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条边连接到其他对象。