邻接表存储结构的图的代码描述
CreatGraph(int n, VNode G[] ){ int i, e; ArcNode *p, *q; printf("Input the information of the vertex\n"); for(i=0; i<n; i++){ Getdata(G[i]); //得到每个顶点中的数据 G[i].firstarc = NULL; //初始化第一条边为空 } for(i=0; i<n; i++){ printf("Creat the edges for the %dth vertex\n", i); scanf("%d", &e); //输入边指向的顶点下标 while(e != -1){ p = (ArcNode *)malloc(sizeof(ArcNode)); //创建一条边 p->next = NULL; //链表结点的next域置NULL p->adjvex = e; //将该边指向顶点的信息赋值给adjvex if(G[i].firstarc == NULL) G[i].firstarc = p; //i结点的第一条边 else q->next = p; //下一条边 q = p; scanf("%d", &e); } } }
创建图1-34所示的邻接表结构,通过下面的代码实现
main() { VNode G[3]; CreatGraph(3, G); }