那位大侠帮我看看这段代码呀。是和图有关的。谢谢了
那位大侠帮我看看这段代码呀。是和图有关的。谢谢了
#include<stdio.h>
#define vnum 20
typedef struct arc
{int ad;
struct arc *next;
}arcn;
typedef struct ve
{int vex;
arcn *fir;
}adj[vnum];
typedef struct gra
{
adj adjl;
int vexnn,arcnn;
}gr;
void createtu(gr *g) //建立一个图
{int n,e,i,j,k;
arcn *p;
printf("ding dian shu he bian shu:");
scanf("%d %d",&n,&e);
g->vexnn=n;
g->arcnn=e;
for(i=0;i<n;i++)
{
g->adjl[i].vex=i;
g->adjl[i].fir=NULL;
}
for(k=0;k<e;k++)
{
printf("i,j=??");
scanf("%d,%d",&i,&j);
p=(arcn *)malloc(sizeof(arcn));
if(p==NULL)
{
printf("error");
exit(0);
}
p->ad=j;
p->next=g->adjl[i].fir;
g->adjl[i].fir=p;
}
}
void disp(gr *g) //显示图
{
int i,ha;
arcn *p;
for(i=0;i<g->vexnn;i++)
{p=g->adjl[i].fir;
ha=0;
while(p!=NULL)
{printf("(%d,%d)",i,p->ad);
p=p->next;
ha=1;}
if(ha==1)printf("\n");
}
}
main()
{
gr g;
createtu(&g);
disp(&g);
}
运行结果:
ding dian shu he bian shu:3 3
i,j=?? 0 1
i,j=??i,j=??0 2
输出一个乱结果而且scanf()少运行了一次。