1

我想在C中实现二维网格图。从单个节点开始并在需要时继续添加节点还是一次形成一个节点更好?代码片段会很棒。

4

2 回答 2

0

首先,StackOverflow 社区不喜欢为给定的问题提供完整的解决方案。最好是自己提出一些建议,并表明你已经考虑过这个问题。您的问题陈述并不具体。你知道编译时的顶点数吗?如果是这样,简单的二维数组就足够了:

int connections[100][100];

如果不是,但顶点的数量是恒定的,也许你应该考虑使用动态分配:

int** connections = malloc(sizeof(int*)*numberOfVertices);
for (int i = 0; i < numberOfVertices; i++) {
    connections[i] = malloc(sizeof(int)*numberOfVertices);
}

这两种解决方案当然会引起一些问题。例如,它们的内存非常昂贵(尤其是当图形稀疏时)。这就是为什么你总是可以使用一些专用的结构。

于 2013-01-15T19:43:58.450 回答
0

如果您正在考虑随时添加节点,那么您应该使用邻接表(链表的链表)来表示您的图;特别是因为随手添加意味着您不知道您的图表是否会被解析。但是,如果您已经知道图形的大小,则使用方形数组(n x n,其中 n 是节点数)。

于 2013-01-15T23:20:05.453 回答