数据结构 用邻接矩阵实现深度优先遍历 求助

#define MAX_VNUM 100
#include<stdio.h> 
#include<stdlib.h> 

typedef struct GNode
{
	int nv;//顶点数 
	int ne;//边数
	int G[MAX_VNUM][MAX_VNUM] ;
}GNode,*MGraph;

MGraph GreatGraph()
{
	MGraph Graph;
	Graph=(MGraph)malloc(sizeof(struct GNode));
	printf("请输入顶点数和边数:");
	scanf("%d",&Graph->nv);
	scanf("%d",&Graph->ne);//注意%d后面不要加\n,会出bug(>^ < )
	for(int v=0;v<Graph->nv;v++)
		for(int w=0;w<Graph->nv;w++)
			Graph->G[v][w]=0;
	int v1,v2,w1;
	for(int i=0;i<Graph->ne;i++)
	{
		printf("请输入V1和V2和其之间边数W:"); 
		scanf("%d%d%d",&v1,&v2,&w1);
		Graph->G[v1][v2]=w1;
	}
	printf("所以邻接矩阵为:\n");
	int i,j;
	for(i=0;i<Graph->nv;i++)
	{
		for(j=0;j<Graph->nv;j++)
		{
			printf("%d	",Graph->G[i][j]);
			if((j+1)%(Graph->nv)==0)
				printf("\n");
 		}
	}
	return Graph;
}

//用邻接矩阵实现DFS
int visit[MAX_VNUM];

void DFS(MGraph Graph,int v)//深度遍历 
{
	visit[v]=1;//遍历了,变为1 
	for(int w=0;w<MAX_VNUM;w++)
	{
		if(visit[w]==0&&Graph->G[v][w]==1)
		printf("%d ",w+1);
		DFS(Graph,w);//递归调用 
	}
}

void TraverseGraph(MGraph Graph)
{
	int v;
	for(v=0;v<MAX_VNUM;v++)
	{
		visit[v]=0;//设置初始值都为0 
	}
	for(v=0;v<MAX_VNUM;v++)
	{
		if(visit[v]==0) 
		printf("%d ",v+1);
		DFS(Graph,v);
	}
}


int main()
{
	MGraph Graph;
	GreatGraph();
	
	printf("深度遍历结果为:"); 
	TraverseGraph(Graph); 
	return 0;
}

这是我的代码,0 warnings
​0 errors
但函数无法运行
debug
“​Program received signal SIGSEGV ,Segmentation fault”
​看CPU窗口
​“未响应”
​who can help me

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值