用C++求图的遍历

来源:百度知道 编辑:UC知道 时间:2024/05/29 00:24:54
问题描述:从键盘上输入一个图的基本信息(图用邻矩阵表示),输出这个图的深度优先序列
A)首先输入图的结点数->num:
B)依次输入图的各条边(数据之间用空格隔开):
C)输出的形式:按用户选择的遍历方法给出遍历顺序,各字符间用->分隔。
D)程序所能达到的功能:能够按要求输出所要的结果。

#define M 20
#include <stdio.h>
#include <stdlib.h>
#include <malloc.h>
/*定义图*/
typedef struct{
int V[M];
int R[M][M];
int vexnum;
}Graph;

/*创建图*/
void creatgraph(Graph *g,int n)
{
int i,j,r1,r2;
g->vexnum=n;
/*顶点用i表示*/
for(i=1;i<=n;i++)
{
g->V[i]=i;
}
/*初始化R*/
for(i=1;i<=n;i++)
for(j=1;j<=n;j++)
{
g->R[i][j]=0;
}
/*输入R*/
printf("请按如下形式(2,4)输入R(0,0 END):\n");
scanf("%d,%d",&r1,&r2);
while(r1!=0&&r2!=0)
{
g->R[r1][r2]=1;
g->R[r2][r1]=1;
scanf("%d,%d",&r1,&r2);
}
}

/*打印图的邻接矩阵*/
void printgraph(Graph *g)
{
int i,j;
for(i=1;i<=g->vexnum;i++)
{ for(j=1;j<=g->vexnum;j++)