C 图可以实现为列表吗?
一位老师让我在图形学课上画伦敦地铁的环线。如我所见,黄线可以表示为图形,也可以表示为循环链表 在上一个图形算法中,我创建了以下结构: 结构图{ 国际信息; 结构图*边[3]; };代码> 下面的圆线图是否正确?或者我会把它变成一个链表而不是一个图表 结构图{ 国际信息; 结构图*下一步; 结构图*prev;C 图可以实现为列表吗?,c,list,data-structures,graph,C,List,Data Structures,Graph,一位老师让我在图形学课上画伦敦地铁的环线。如我所见,黄线可以表示为图形,也可以表示为循环链表 在上一个图形算法中,我创建了以下结构: 结构图{ 国际信息; 结构图*边[3]; }; 下面的圆线图是否正确?或者我会把它变成一个链表而不是一个图表 结构图{ 国际信息; 结构图*下一步; 结构图*prev; }我会制作一个循环双链接列表,就像您的第二个建议一样。我认为这是第一个建议。但前提是每个对象都有两个顶点 顺便说一句,链表是一种列表类型 如果顶点数量可变,则指针数量可变,如下所示: struc
}我会制作一个循环双链接列表,就像您的第二个建议一样。我认为这是第一个建议。但前提是每个对象都有两个顶点 顺便说一句,链表是一种列表类型 如果顶点数量可变,则指针数量可变,如下所示:
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条边连接到其他对象。链表是一个图形(在软件到数学的通常映射中,对象节点和指针是边)。但是您有一个名为
graph
的结构,它似乎表示(数学)图的一个片段。你在问它是否能代表“圆线图”。。。什么是不
?明白了。我担心将这个图实现为一个双链表会使它不再是一个图,就像它必须遵循一些规则一样。抱歉,no
是一个打字错误。此图形具有双链接列表的拓扑结构。不是每个图表都是这样。是的,但我不明白在这种情况下,图表和列表的区别在哪里。创建边向量是什么定义它为图形?或者可以实现下一个和上一个指针?双链接列表是一个最多有2条边的图。如果你想要的话,你可以多吃一些。只需将一个双指针指向struct graph
和malloc()
即可,并将它们指向所需的边数。请参阅我的最新答案。