你有问题我帮忙_帮忙验证一下哪里出问题了,我用的是C-Free5

原问题:帮忙验证一下哪里出问题了,我用的是C-Free5
分类:编程开发 > 最后更新时间:【2016-12-13 01:01:13】
问题补充:

完整的

#include<stdio.h>

#include<stdlib.h>

#define MAX 20

typedef int VexType;

typedef struct Vnode

{ VexType data;

struct Vnode * next;

}Vnode; /*Vnode是顶点的结点结构*/

typedef Vnode Lgraph[MAX]; /*Lgraph是一维数组类型标识符*/

/*函数原型声明*/

void creat_L(Lgraph G);

void out_L(Lgraph G);

void dfsL(Lgraph G,int v);

Lgraph Ga; /*Ga是邻接链表的表头数组名*/

int n,e,vis[MAX];

/*主函数*/

main()

{ int v1,i;

for(i=0;i<MAX;i++)vis[i]=0; /*顶点访问的标志数组*/

creat_L(Ga); /*建立图邻接表Ga*/

out_L(Ga); /*输出邻接链表Ga*/

printf("\nv请输入遍历的起始顶点1=");

scanf("%d",&v1);

dfsL(Ga,v1); /*从顶点v1开始,对图Ga进行深度优先遍历*/

printf("\n\n 按Enter键,继续");getchar();

}/*main*/

/*建立邻接链表*/

void creat_L(Lgraph G);

{ Vnode*p,*q; int i,j,k;

printf("输入顶点的数量n,边的数量e\n n,e=?");

scanf("%d,%d",&n,&e);

for(i=1;i<=n;i++) {G[i].data=i;G[i].next=NULL;}

for(k=1;i<=e;k++)

{ printf("输入vi,vj=?");scanf("%d,%d",&i,&j);

p=(Vnode*)malloc(sizeof(Vnode));

p->data=i;

p->next=G[j].next;G[j].next=p; /*p结点链接到第j条链*/

q=(Vnode*)malloc(sizeof(Vnode));

q->data=j;

q->next=G[i].next;G[i].next=q; /*q结点链接到第i条链*/

}

}/*creat_L*/

/*邻接链表的简单输出,为了检查输入是否正确*/

void out_L(Lgraph G)

{ int i;Vnode*p;

for (i=1;i<=n;i++)

{printf("\n i=%d",i);

p=G[i].next;

while(p!=NULL) {printf("%5d",p->data)data;p=p->next;}

}

printf("\n\n 按Enter键,继续");getchar();

}/*out_L*/

/*深度优先遍历图*/

void dfsL(Lgraph G,int v)

{ Vnode*p;

printf("%3d",G[v].data); vis[v]=1; /*顶点v被访问,标志置1*/

p=G[v].next;

while(p){ v=p->data;

if(vis[v]==0) dfsL(G,v); /*顶点v未被访问时继续遍历*/

p=p->next;

}

}/*dfs*/

最佳答案

程序较多,只能帮你改掉语法部分

28行void creat_L(Lgraph G);

后面多一个分号

49行

while(p!=NULL) {printf("%5d",p->data)data;p=p->next;}

应该是

while(p!=NULL) {printf("%5d",p->data);p=p->next;}

改好后就可以编译运行了

最佳答案由网友  whoami1978  提供
公告: 为响应国家净网行动,部分内容已经删除,感谢网友理解。
4

分享到:

其他回答

暂无其它回答!

    推荐