写了一个DFS算法,用Codeblocks运行的时候scanf()直接被跳过了,是怎么回事呢?
/*树的邻接矩阵的存储结构*/#include <stdio.h>
#include <stdlib.h>
typedef char VertexType;
typedef int EdgeType;
#define MAXVEX 10
#define INF 65535
static int Flag;
typedef struct MGraph
{
VertexType vex;
EdgeType arc;
int numVertexes;
int numEdges;
}MGraph;
void CreateMGraph(MGraph *G)
{
int i = 0,j = 0,k = 0,w = 0;
printf("请输入顶点数和边数,之间用逗号隔开 :\n");
scanf("%d,%d",&(G->numVertexes),&(G->numEdges));
printf("请输入顶点的值 :\n");
for(i = 0;i < G->numVertexes;i++)
{
scanf("%c",&(G->vex));
}
//邻接矩阵的初始化
for(i = 0;i < G->numVertexes;i++)
{
for(j = 0;j < G->numVertexes;j++)
{
G->arc = INF;
}
}
for(i = 0;i < MAXVEX;i++)
{
Flag = 0;
}
for(i = 0,j = 0,k = 0; k < G->numEdges; k++)
{
printf("请输入边(Vi~Vj)的顶点下标i和j,以及权重w:\n");
scanf("%d,%d,%d",&i,&j,&w); //<b>调试的时候,这一行貌似没有执行!!!</b>
G->arc = w;
G->arc = G->arc;
}
for(i = 0;i < G->numVertexes;i++)
{
for(j = 0;j < G->numVertexes;j++)
{
printf("%d ",G->arc);
}
printf("\n");
}
}
void DepthFirstSearch(MGraph *G,int i)
{
int k = 0;
printf("%c",G->vex);
Flag = 1;
for(k = 0;k < G->numVertexes;k++)
{
if(Flag == 0 && G->arc != INF)
{
DepthFirstSearch(G,k);
}
}
}
int main()
{
int k = 0; //设置从邻接矩阵的第几行开始DFS搜索,这里从第1行开始
struct MGraph *G;
CreateMGraph(G);
DepthFirstSearch(G,k);
return 0;
}
就是 scanf("%d,%d,%d",&i,&j,&w);
这一行好像直接被跳过了,是怎么回事呢? 就像图片所示的这样,求大神指点迷津···
最后下面三行,是打印的矩阵,这个for循环貌似只把初始的w = 0,付给了arc,没有提示输入i,j,w的值。。。是怎么回事???
页:
[1]