【发布时间】:2019-01-29 09:34:36
【问题描述】:
我正在学习 C 中的图形数据结构,并且我已经用邻接矩阵表示了一个图形。到目前为止,我创建了邻接矩阵,这意味着(至少在我的理解中)我已经指定了“在哪些顶点之间会有边”,尽管我还没有创建任何实际的节点。现在,在我完成之后,我想用包含我自己的数据类型的节点(比如包含一些元素的结构中的每个节点)来实际填充我的图表。我用谷歌搜索了很多,但我发现的只是有关如何创建邻接矩阵的示例,但解释会停在那里,而不会显示您如何在图中实际插入新元素。
我已经编写了填充邻接矩阵的代码。我提供了以下代码:
#include<stdio.h>
#define V 5
void init(int arr[][V])
{
int i,j;
for(i = 0; i < V; i++)
for(j = 0; j < V; j++)
arr[i][j] = 0;
}
void addEdge(int arr[][V],int src, int dest)
{
arr[src][dest] = 1;
}
void printAdjMatrix(int arr[][V])
{
int i, j;
for(i = 0; i < V; i++)
{
for(j = 0; j < V; j++)
{
printf("%d ", arr[i][j]);
}
printf("\n");
}
}
int main()
{
int adjMatrix[V][V];
init(adjMatrix);
addEdge(adjMatrix,0,1);
addEdge(adjMatrix,0,2);
addEdge(adjMatrix,0,3);
addEdge(adjMatrix,1,3);
addEdge(adjMatrix,1,4);
addEdge(adjMatrix,2,3);
addEdge(adjMatrix,3,4);
printAdjMatrix(adjMatrix);
return 0;
}
现在我的问题是:要使用新节点填充我的图表,我是否必须创建另一个大小为 noofnodes x noofnodes 的数组并填充它?这是正确的方法还是有其他方法?我想知道这样做的正常和被认为正确的方法是什么。
感谢您的阅读。
【问题讨论】:
-
我不明白你的问题,要创建你的图(节点),不一定要有一个支持邻接矩阵的数组,我的意思是你可以直接创建它以便用新节点填充它是一样的
-
@bruno 所以我创建了邻接矩阵,它显示了节点之间的连接在哪里,或者在创建节点后更好地说“将在”。现在说我想创建两个节点。如何将新创建的节点与我刚刚创建的邻接矩阵“链接”?可以举个例子吗?
-
基本上这个例子应该有帮助:我在节点 0 到节点 1 之间有一条边。请告诉我如何创建这两个节点并将它们链接起来,以便它们具有矩阵中所示的连接(来自0 到 1)。我知道我可能无法清楚地解释所有内容,但我希望您能理解我的意思:D。谢谢