📄 maingraph.cpp
字号:
#include"GraphFile.h"
main()
{
ALGraph G;
queue Q1;
FILE *fp1;
int i,ivex,k;
int Dvisit[MAXSIZE],Gvisit[MAXSIZE];
//为深度优先和广度优先时结点是否被访问设立访问数组
char message[10];
printf("如果想用程序自带测试文件请按1,否则按0:\n");
scanf("%d",&k);
switch(k){
case 0:
//自行输入图的信息
printf("请输入点的个数:\n");
scanf("%d",&G.vexnum);
printf("请输入边数:\n");
scanf("%d",&G.arcnum);
printf("请输入顶点信息:\n");
for(i=1;i<=G.vexnum;i++){
G.AdjList[i].data.local=i;
scanf("%s",message);
strcpy(G.AdjList[i].data.VexMessage,message);
G.AdjList[i].firstarc=NULL;
}
//初始化图,给出图的顶点信息
for(i=1;i<=G.vexnum;i++) {
Dvisit[i]=0;
Gvisit[i]=0;
}
//访问数组初始化
CreatGraph(G);
//创建图
break;
case 1:
//利用文件输入图的信息
printf("顶点数为8\n");
printf("边数为9\n");
G.arcnum=9;
G.vexnum=8;
for(i=1;i<=G.vexnum;i++) {
Dvisit[i]=0;
Gvisit[i]=0;
}
if((fp1=fopen("vexmessage.txt","r"))==NULL){
printf("cannot open the file!\n");
exit(0);
}
//打开文件,该文件中存放图的顶点信息
for(i=1;i<=G.vexnum;i++){
G.AdjList[i].data.local=i;
fscanf(fp1,"%s",message);
strcpy(G.AdjList[i].data.VexMessage,message);
G.AdjList[i].firstarc=NULL;
}
CreatFGraph(G);
//创建图
break;
}
printf("深度优先遍历:\n");
printf("访问结点的边集:\n");
ivex=1;
InitQueue(Q1);
//初始化队列
DVisitGraph(G,Dvisit,ivex,Q1);
//深度优先遍历图
PutBound(G,Q1);
//输出边集
for(i=1;i<=G.vexnum;i++){
if(Dvisit[i]==0) {
InitQueue(Q1);
DVisitGraph(G,Dvisit,i,Q1);
PutBound(G,Q1);
}
}
//如果为非连通图时,深度优先图需要再找为访问顶点,继续编历图
printf("\n");
printf("广度优先遍历:\n");
printf("访问结点边集:\n");
GVisitGraph(G,Gvisit,ivex);
//广度优先编历图
printf("\n");
return(0);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -