鱼C论坛

 找回密码
 立即注册
查看: 3676|回复: 3

写了一个DFS算法,用Codeblocks运行的时候scanf()直接被跳过了,是怎么回事呢?

[复制链接]
发表于 2014-12-19 11:10:56 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
  1. /*树的邻接矩阵的存储结构*/
  2. #include <stdio.h>
  3. #include <stdlib.h>

  4. typedef char VertexType;
  5. typedef int EdgeType;
  6. #define MAXVEX 10
  7. #define INF    65535

  8. static int Flag[MAXVEX];
  9. typedef struct MGraph
  10. {
  11.     VertexType vex[MAXVEX];
  12.     EdgeType arc[MAXVEX][MAXVEX];
  13.     int numVertexes;
  14.     int numEdges;
  15. }MGraph;

  16. void CreateMGraph(MGraph *G)
  17. {
  18.     int i = 0,j = 0,k = 0,w = 0;
  19.     printf("请输入顶点数和边数,之间用逗号隔开 :\n");
  20.     scanf("%d,%d",&(G->numVertexes),&(G->numEdges));
  21.     printf("请输入顶点的值 :\n");
  22.     for(i = 0;i < G->numVertexes;i++)
  23.     {
  24.         scanf("%c",&(G->vex[i]));
  25.     }
  26.     //邻接矩阵的初始化
  27.     for(i = 0;i < G->numVertexes;i++)
  28.     {
  29.         for(j = 0;j < G->numVertexes;j++)
  30.         {
  31.             G->arc[i][j] = INF;
  32.         }
  33.     }
  34.     for(i = 0;i < MAXVEX;i++)
  35.     {
  36.         Flag[i] = 0;
  37.     }
  38.     for(i = 0,j = 0,k = 0; k < G->numEdges; k++)
  39.     {
  40.         printf("请输入边(Vi~Vj)的顶点下标i和j,以及权重w:\n");
  41.         scanf("%d,%d,%d",&i,&j,&w);                                                  //<b>调试的时候,这一行貌似没有执行!!!</b>
  42.         G->arc[i][j] = w;
  43.         G->arc[j][i] = G->arc[i][j];
  44.     }
  45.     for(i = 0;i < G->numVertexes;i++)
  46.     {
  47.         for(j = 0;j < G->numVertexes;j++)
  48.         {
  49.             printf("%d ",G->arc[i][j]);
  50.         }
  51.         printf("\n");
  52.     }
  53. }

  54. void DepthFirstSearch(MGraph *G,int i)
  55. {
  56.     int k = 0;
  57.     printf("%c",G->vex[i]);
  58.     Flag[i] = 1;
  59.     for(k = 0;k < G->numVertexes;k++)
  60.     {
  61.         if(Flag[k] == 0 && G->arc[i][k] != INF)
  62.         {
  63.             DepthFirstSearch(G,k);
  64.         }
  65.     }

  66. }

  67. int main()
  68. {
  69.     int k = 0;              //设置从邻接矩阵的第几行开始DFS搜索,这里从第1行开始
  70.     struct MGraph *G;
  71.     CreateMGraph(G);
  72.     DepthFirstSearch(G,k);
  73.     return 0;
  74. }
复制代码


想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2014-12-19 11:11:52 | 显示全部楼层
就是 scanf("%d,%d,%d",&i,&j,&w);
这一行好像直接被跳过了,是怎么回事呢?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-12-19 11:14:51 | 显示全部楼层
就像图片所示的这样,求大神指点迷津···

就像这样····

就像这样····
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-12-19 11:23:00 | 显示全部楼层
最后下面三行,是打印的矩阵,这个for循环貌似只把初始的w = 0,付给了arc[0][0],没有提示输入i,j,w的值。。。是怎么回事???
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-5-22 20:15

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表