题目描述
从键盘接收有向图的顶点集,弧集,创建有向图,并完成下列任务:
(1)计算结点的出度、入度以及度;
(2) 从第一个顶点出发,求一个深度优先遍历序列;
(3) 从第一个顶点顶点出发,求一个广度优先遍历序列。
注意:以用户输入各个顶点的顺序为顶点的序号。
在深度和广度优先遍历中,优先选择序号小的顶点。
图的领结矩阵的数据类型描述如下
#define MAX 20 // 最大顶点个数
typedef struct {
int arcs[MAX][MAX]; //边信息
int visit[MAX]; //顶点信息
char vex[MAX];
int vexnum; //顶点数目
int arcnum; //边数目
}AdjMatrix; //领接矩阵
用邻结矩阵创建无向网
void Creat(AdjMatrix * x) {
int i, j , k, vex1, vex2;
char Vex1,Vex2;
scanf("%d %d",&x->vexnum, &x->arcnum);
getchar();
//printf("%d %d\n",x->vexnum, x->arcnum);
for (i = 1; i <= x->vexnum; i++) {
for (j = 1; j <= x->vexnum; j++ ) {
x->arcs[i][j] = 0;
}
}
for(i = 1; i <= x->vexnum; i++){
scanf("%c",&x->vex[i]);
}
// for(i = 1; i <= x->vexnum; i++){
// printf("%c",x->vex[i]);
// }
getchar();
for( i = 0; i< x-> arcnum; i++) {
scanf("%c%c",&Vex1,&Vex2);