e2栈和队列.c

来自「1、 图的存储结构的定义和图的创建 图的种类有:有向图、无向图、有向网、无向网」· C语言 代码 · 共 86 行

C
86
字号
//#include"feidigui.c"
#include"feidigui2.c"

/*Status CreatGraph(MGraph G)
{//1表示无向图,2表示有向图,3表示无向网,4表示有向网//
	int i;
	printf("1表示无向图,2表示有向图,3表示无向网,4表示有向网\n");
	printf("please choose\n");
	scanf("%d",&G.kind);
	switch(G.kind)){
	case DG: return CreateDG(G);
	case DN: return CreateDN(G);
	case UDG: return CreateUDG(G);
	case UDN: return CreateUDN(G);
	default:return ERROR;
	}
}//CreatGraph*/

int Locate(MGraph G,char v)
{
	int i;
	for(i=0;i<G.vexnum&&G.vexs[i]!=v;i++);
	return i;
}

void CreatUDN(MGraph *G){
	int i,j,k,w;
	char v1,v2;
	printf("input arcnum and vexnum\n");
	scanf("%d %d",&(*G).arcnum,&(*G).vexnum);
	getchar();
	for(i=0;i<(*G).vexnum;i++)
	{
		printf("input vex\n");
		scanf("%c",&(*G).vexs[i]);
		getchar();
		printf("%c%d",(*G).vexs[i],i);
	}
	for(i=0;i<(*G).vexnum;i++)
		for(j=0;j<(*G).vexnum;j++)
			(*G).arcs[i][j].adj=INFINITY;
	for(k=0;k<(*G).arcnum;k++)
	{
		printf("input edge and w\n");
		scanf("%c%c%d",&v1,&v2,&w);
		getchar();
		printf("%c%c%d",v1,v2,w);
		i=Locate((*G),v1);
		j=Locate((*G),v2);
		printf("%d%d",i,j);
		(*G).arcs[i][j].adj=w;
		(*G).arcs[j][i].adj=w;
	}
}
print(MGraph G)
{
	int i,j;
	for(i=0;i<G.vexnum;i++)
	{
		for(j=0;j<G.vexnum;j++)
			if(G.arcs[i][j].adj<INFINITY)
			     printf("%d",G.arcs[i][j].adj);
		     else
				 printf("#");
		printf("\n");
	}
}



main()
{
	MGraph G;
	CreatUDN(&G);
	printf("输出所有节点的相邻节点\n");
	print(G);
	printf("调后bfs or dfs输出结果\n");
	//DFSTraverse(G);
	BFSTraverse (G);
	printf("\n");
//	printf("%%%%%%%%%%%\n");
	
}


⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?