⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 maingraph.cpp

📁 这是关于数据结构习题书,清华大学出版社出版,上实验五的一个实验,自己写的,多多指教
💻 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 + -