BeatificDevin 发表于 2014-12-19 11:10:56

写了一个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;
}


BeatificDevin 发表于 2014-12-19 11:11:52

就是 scanf("%d,%d,%d",&i,&j,&w);
这一行好像直接被跳过了,是怎么回事呢?

BeatificDevin 发表于 2014-12-19 11:14:51

就像图片所示的这样,求大神指点迷津···

BeatificDevin 发表于 2014-12-19 11:23:00

最后下面三行,是打印的矩阵,这个for循环貌似只把初始的w = 0,付给了arc,没有提示输入i,j,w的值。。。是怎么回事???
页: [1]
查看完整版本: 写了一个DFS算法,用Codeblocks运行的时候scanf()直接被跳过了,是怎么回事呢?