鱼C论坛

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

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

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

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

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

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

typedef char VertexType;
typedef int EdgeType;
#define MAXVEX 10
#define INF    65535

static int Flag[MAXVEX];
typedef struct MGraph
{
    VertexType vex[MAXVEX];
    EdgeType arc[MAXVEX][MAXVEX];
    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[i]));
    }
    //邻接矩阵的初始化
    for(i = 0;i < G->numVertexes;i++)
    {
        for(j = 0;j < G->numVertexes;j++)
        {
            G->arc[i][j] = INF;
        }
    }
    for(i = 0;i < MAXVEX;i++)
    {
        Flag[i] = 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[i][j] = w;
        G->arc[j][i] = G->arc[i][j];
    }
    for(i = 0;i < G->numVertexes;i++)
    {
        for(j = 0;j < G->numVertexes;j++)
        {
            printf("%d ",G->arc[i][j]);
        }
        printf("\n");
    }
}

void DepthFirstSearch(MGraph *G,int i)
{
    int k = 0;
    printf("%c",G->vex[i]);
    Flag[i] = 1;
    for(k = 0;k < G->numVertexes;k++)
    {
        if(Flag[k] == 0 && G->arc[i][k] != INF)
        {
            DepthFirstSearch(G,k);
        }
    }

}

int main()
{
    int k = 0;              //设置从邻接矩阵的第几行开始DFS搜索,这里从第1行开始
    struct MGraph *G;
    CreateMGraph(G);
    DepthFirstSearch(G,k);
    return 0;
}

想知道小甲鱼最近在做啥?请访问 -> 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-11-22 14:51

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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