#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