问题遇到的现象和发生背景
打印临界表时打印不全
问题相关代码,请勿粘贴截图
int creat(AdjList *a)
{
int i,j,n,t,e;
int sum;//sum和arcnum一样代表图中总的弧数
ArcNode *p1,*p2,c;
printf("请输入城市的的总个数和航线的总个数\n");
scanf("%d,%d",&t,&e);
a->arcnum=e;
a->vexnum=t;
sum=e;
for(int w=1;w<=t;w++)
{
printf("\n请输入的第%d个城市名称:",w);
scanf("%s",cities[w]);
}
for(int x=1;x<=t;x++)
{
printf("%d %s\n",x,cities[x]);
}
for(i=0;i<a->vexnum;i++)
a->vertex[i].firstarc=NULL;//初始化和顶点第一个相邻的弧为空;
for(i=0;i<a->vexnum;i++)
{
printf("***请输入第%d个城市***\n",i+1);
scanf("%d",&a->vertex[i].data);
if(sum==0) continue;
printf("请输入本城市航班的个数\n");
scanf("%d",&n);
for(j=0;j<n;j++)
{
if(j==0)
{
int q;
p1=p2=( ArcNode*)malloc(sizeof(ArcNode));
p1->next=p2->next=NULL;
a->vertex[i].firstarc=p1;
printf("请输入与第%d个城市出发的航班第%d个到城市 以及票价\n",i+1,j+1);
scanf("%d,%d",&p1->adjvex,&p1->weigh);
sum--;
}
else{
p2=(ArcNode*)malloc(sizeof(ArcNode));
p2->next=NULL;
p1->next=p2;
printf("请输入第%d个城市出发的航班到第%d个城市 以及票价\n",i+1,j+1);
scanf("%d,%d",&p2->adjvex,&p2->weigh);
sum--;
}
}
printf("**************************\n");
}
}
//打印邻接表
void print(AdjList *a)
{
int i;
printf("序号\t顶点名称\t\t边表\n");
for (i = 0; i <a->vexnum ; i++)
{
printf("%d\t", i+1); //打印序号
printf("%s\t\t->", cities[i+1]); //打印顶点
while (a->vertex[i].firstarc)
{
printf("%s(%d)->", cities[a->vertex[i].firstarc->adjvex], a->vertex[i].firstarc->weigh);
a->vertex[i].firstarc = a->vertex[i].firstarc->next;
}
printf("NULL\n");
}
}
运行结果及报错内容

