我是图表新手,我正在尝试在图表中编写非常简单的程序。我编写了两个函数,其中一个创建了一个空图,其顶点数与用户输入的一样多。另一个,在两个顶点之间添加有向边。
前者成功执行,但后者没有。程序停止运行,但代码编译成功。
#include <stdio.h>
#include <stdlib.h>
#define MAX 1000
struct node
{
int data;
struct node *next;
};
struct node *arr[MAX];
void createEmptyGraph(int n)
{
// n is the number of vertices
int i;
for(i=0;i<n;i++)
{
arr[i]=NULL;
}
printf("\nAn empty graph with %d vertices has been created",n);
printf("\nNo edge is connected yet");
}
void addNode(int startVertex,int endVertex)
{
// For directed edges
struct node *n;
n=(struct node *)malloc(sizeof(struct node));
n->next=arr[startVertex];
arr[startVertex]->next=n;
printf("\nAn edge between directed from %d to %d has been added",startVertex,endVertex);
}
int main(void)
{
int num;
printf("Enter the number of vertices in the graph: ");
scanf("%d",&num);
createEmptyGraph(num);
addNode(0,1);
return 0;
}
我正在使用图形的邻接表表示。请指出错误。
还有一件事,在createEmptyGraph()
方法中,为什么我不能做这样的事情
for(i=0;i<n;i++)
{
arr[i]->data=d;
arr[i]->next=NULL;
}