a3.cpp

来自「用于数据结构的课程设计,是利用邻接矩阵建立图的」· C++ 代码 · 共 56 行

CPP
56
字号
# include <stdio.h>
# include <malloc.h>
# include "定义.h"
extern void MatToList(MGraph,ALGraph * &);
extern void DispMat(MGraph);
extern void DispAdj(ALGraph *);
extern void DFS(ALGraph * G,int v);
extern void DFS1(ALGraph * G,int v);
void main()
{
	  int i,j,k=0;
	  MGraph g;
	  ALGraph * G;
      int A[MAXV][7]={		
		  {0,1,0,0,0,1,0},
		  {1,0,1,0,0,0,0},
		  {0,1,0,1,0,0,1},
		  {0,0,1,0,1,0,0},
		  {0,0,0,1,0,0,0},
		  {1,0,0,0,0,0,1},
		  {0,0,1,0,0,1,0}};
      g.vexnum=7;
	  for(i=0;i<g.vexnum;i++)
	 	  for(j=0;j<g.vexnum;j++)
			  g.edges[i][j]=A[i][j];
      for(i=0;i<g.vexnum;i++)                        /*判断图的类型*/
		  for(j=0;j<g.vexnum;j++)
			  if(g.edges[i][j]!=g.edges[j][i])
			  {
				  printf("图G为有向图\n");
			      for(i=0;i<g.vexnum;i++)            /*求出图的边数*/
					  for(j=0;j<g.vexnum;j++)
						  if(g.edges[i][j]!=0) k=k+1;
	           	  g.arcnum=k;
				  printf("图G有 %3d 条弧\n",g.arcnum);
				  goto next;
			  }
	  printf("图G为无向图\n");
	  for(i=0;i<g.vexnum;i++)                                               
	  	  for(j=0;j<=i;j++)                          /*求出图的边数*/
			  if(g.edges[i][j]!=0) k=k+1;
	  g.arcnum=k;
  	  printf("图G有 %3d 条边\n",g.arcnum);
next: printf("图G的邻接矩阵:\n");
	  DispMat(g);
	  G=(ALGraph * )malloc(sizeof(ALGraph));
	  printf("图G的邻接矩阵转换成邻接表:\n");
	  MatToList(g,G);
	  DispAdj(G);
	  printf("从顶点0开始的DFS(递归算法):\n");
	  DFS(G,0);printf("\n");
      printf("从顶点0开始的DFS1(非递归算法):\n");
	  DFS1(G,0);
	  printf("\n");
}

⌨️ 快捷键说明

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