Cで基本的なグラフプログラムを書こうとしています。ただし、エラー メッセージが表示され、The arrayOfVertices is undeclared
. 私は隣接リスト表現を使用しており、コードは
#include <stdio.h>
#include <stdlib.h>
struct graphnode
{
int name;
struct graphnode *next;
};
void addNode(struct graphnode *G[],int startNode, int endNode)
{
// creating a new linked list which is to be added
struct graphnode *tmp;
tmp->name=endNode;
tmp->next=G[startNode];
startNode=tmp;
}
void printGraph(struct graphnode *G[], int numofnodes)
{
int i;
for(i=0;i<numofnodes;i++)
{
struct graphnode *tmp;
tmp=G[i];
printf("%d",i);
while(tmp!=NULL)
{
printf("%d",tmp->name);
tmp=tmp->next;
}
}
}
int main(void)
{
int numofnodes;
printf("Enter the number of nodes: ");
scanf("%d",&numofnodes);
// Note that we have created depending upon the size inputted by the user
struct graphnode *arrayOfVertices[numofnodes];
int i; // for iteration
for(i=0;i<numofnodes;i++)
{
arrayOfVertices[i]->name=i;
arrayOfVertices[i]->next=NULL;
}
addNode(arrayOfVertices,0,1);
addNode(aarrayOfVertices,0,2);
printGraph(arrayOfVertices,numofnodes);
return 0;
}
私のアプローチは、ユーザーが入力した数のノードを含む (struct graphnode 型の) 配列を作成することです。構造体には 2 つのフィールドがあり、1 つは数値を含み、もう 1 つはポインターを含みます。