int main()
{
int c; //开关控制变量
char m; //继续或退出控制变量
ALGraph G;
init_ALGraph(G); //初始化图
CreateUDN(G); //创建图
PrintAdjList(G); //打印图
//DFSTraverse(G,0); //深度优先搜索
menu();
cout<<"请输入一个游戏控制变量m:m为y或Y表示继续游戏,N或n表示退出游戏:";
cin>>m;
while('y'==m||'Y'==m)
{
cout<<"请输入一个整型开关控制变量c(c=0或1):";
cin>>c;
switch(c)
{
case 0:
{
//求两点之间的简单路径
char ch1,ch2;
char *path; //存放路径
path=(char *)malloc(MAX_VERTEX_NUM*sizeof(char));
cout<<"please input two points:"<<endl;
cin>>ch1>>ch2;
simple_Path(G,ch1,ch2,path);
int i=0;
while(path[i])
cout<<path[i++]; //输出路径
cout<<endl;
break;
}
case 1:
{
//求点到点的最短路径
char cha,chb;
char *s_path; //存放路径
s_path=(char *)malloc( MAX_VERTEX_NUM*sizeof(char) );
cout<<"please input two points:"<<endl;
cin>>cha>>chb;
short_Path(G,chb,cha,s_path); //广度优先搜索
int n=0;
while(s_path[n])
cout<<s_path[n++]; //输出路径
cout<<endl;
break;
}
default:
cout<<"输入错误:"<<endl;
}
cout<<"是否继续游戏:Y,y表示继续游戏,N,n表示退出游戏:";
cin>>m;
}
return 0;
}
其实就是变量作用域的问题,下面在case 0的代码定义了你的路径对吧,但它是在case 0里定义的局部变量,所以再一次循环跑到case 1里边运行的时候,
这些局部变量就已经消亡了,
char ch1,ch2;
char *path; //存放路径
path=(char *)malloc(MAX_VERTEX_NUM*sizeof(char));
cout<<"please input two points:"<<endl;
cin>>ch1>>ch2;
所以
char ch1,ch2;
char *path;
要放在while循环之外定义的。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。