Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/55.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 图可以实现为列表吗?_C_List_Data Structures_Graph - Fatal编程技术网

C 图可以实现为列表吗?

C 图可以实现为列表吗?,c,list,data-structures,graph,C,List,Data Structures,Graph,一位老师让我在图形学课上画伦敦地铁的环线。如我所见,黄线可以表示为图形,也可以表示为循环链表 在上一个图形算法中,我创建了以下结构: 结构图{ 国际信息; 结构图*边[3]; }; 下面的圆线图是否正确?或者我会把它变成一个链表而不是一个图表 结构图{ 国际信息; 结构图*下一步; 结构图*prev; }我会制作一个循环双链接列表,就像您的第二个建议一样。我认为这是第一个建议。但前提是每个对象都有两个顶点 顺便说一句,链表是一种列表类型 如果顶点数量可变,则指针数量可变,如下所示: struc

一位老师让我在图形学课上画伦敦地铁的环线。如我所见,黄线可以表示为图形,也可以表示为循环链表

在上一个图形算法中,我创建了以下结构:

结构图{ 国际信息; 结构图*边[3]; };

下面的圆线图是否正确?或者我会把它变成一个链表而不是一个图表

结构图{ 国际信息; 结构图*下一步; 结构图*prev;
}

我会制作一个循环双链接列表,就像您的第二个建议一样。我认为这是第一个建议。但前提是每个对象都有两个顶点

顺便说一句,链表是一种列表类型

如果顶点数量可变,则指针数量可变,如下所示:

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()
即可,并将它们指向所需的边数。请参阅我的最新答案。