PTA 6-1 求采用邻接矩阵作为存储结构的有向图各顶点的出度

6-1 求采用邻接矩阵作为存储结构的有向图各顶点的出度 (10 分)

本题要求实现一个函数,输出有向图每个顶点的数据元素的值,以及每个顶点的出度的值。

函数接口定义:

函数接口为:
void outdegree(MGraph G);

G为采用邻接矩阵作为存储结构的有向图。

裁判测试程序样例:

#include <stdio.h>
#define MVNum 100                 //最大顶点数 
typedef struct{ 
  char vexs[MVNum];           //存放顶点的一维数组 
  int arcs[MVNum][MVNum];     //邻接矩阵 
  int vexnum,arcnum;          //图的当前顶点数和弧数 
}MGraph; 
void outdegree(MGraph G);
void CreatMGraph(MGraph *G);/* 创建图 */
int main()
{
    MGraph G;
    CreatMGraph(&G);
    outdegree(G);
    return 0;
}
void CreatMGraph(MGraph *G)
{
    int i,j,k;
    scanf("%d%d",&G->vexnum,&G->arcnum);
    getchar();
    for(i=0;i<G->vexnum;i++)
       scanf("%c",&G->vexs[i]);
    for(i=0;i<G->vexnum;i++)
       for(j=0;j<G->vexnum;j++)
          G-
  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,这是一个比较基础的论问题,我可以帮您解答。 首先,我们需要了解一下邻接矩阵邻接存储结构邻接矩阵存储结构是用一个二维数组来表示中的所有顶点之间的关系。其中,数组中的每个元素都表示对应顶点之间的连通关系,如果存在连通关系,则为1,否则为0。 邻接存储结构则是基于链表的数据结构,用来表示中每个顶点和它的邻居顶点之间的关系。每个顶点对应一个链表,链表中存储了所有与该顶点相邻的顶点。 接下来,分别基于这两种存储结构,编写指定顶点入度和度的程序。 1. 邻接矩阵存储结构 我们可以先建立一个邻接矩阵,然后遍历该顶点所在的行和列,统计度和入度。 具体代码如下: ```python # 假设邻接矩阵为adj_matrix,顶点为v def get_degree_adj_matrix(adj_matrix, v): n = len(adj_matrix) in_degree = 0 out_degree = 0 for i in range(n): if adj_matrix[v][i] == 1: # 统计度 out_degree += 1 if adj_matrix[i][v] == 1: # 统计入度 in_degree += 1 return in_degree, out_degree ``` 2. 邻接存储结构 对于邻接存储结构,我们可以直接遍历该顶点对应的链表,统计度和入度。 具体代码如下: ```python # 假设邻接表为adj_list,顶点为v def get_degree_adj_list(adj_list, v): in_degree = 0 out_degree = 0 for node in adj_list[v]: # 统计度 out_degree += 1 for i in range(len(adj_list)): # 统计入度 for node in adj_list[i]: if node == v: in_degree += 1 return in_degree, out_degree ``` 希望能够帮助到您。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值