有向图的创建、求度、遍历

这篇博客介绍如何创建有向图,并通过领结矩阵进行无向网表示。内容包括计算节点的出度和入度,以及从第一个顶点开始的深度优先和广度优先遍历序列。在遍历过程中,优先选择序号较小的顶点。
摘要由CSDN通过智能技术生成

题目描述

从键盘接收有向图的顶点集,弧集,创建有向图,并完成下列任务:

(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);
 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值