首页 > 其他分享 >图---统计无向图中各顶点的度

图---统计无向图中各顶点的度

时间:2024-12-28 18:00:32浏览次数:7  
标签:num int Graph 邻接矩阵 --- ++ 无向 顶点

6-2 统计无向图中各顶点的度

本题要求实现一个函数,统计无向图中各顶点的度。

函数接口定义:

void degree(MGraph Graph,int *num);

其中,Graph为采用 邻接矩阵作为存储结构的无向图,函数degree计算无向图中各顶点的度,并将相应结果存储在数组num中。

裁判测试程序样例:

#include <stdio.h>
#include <stdlib.h>
#define INFINITY 65535  //∞设为65535
#define MAXVERTEXNUM 100  //最大顶点数设为100 

typedef struct GNode *PtrToGNode;
struct GNode{
    int Nv;   //顶点数 
    int Ne;   //边数 
    int G[MAXVERTEXNUM][MAXVERTEXNUM];  //邻接矩阵
    char Data[MAXVERTEXNUM]; 
}; 
typedef PtrToGNode MGraph; //以邻接矩阵存储的图类型

void degree(MGraph Graph,int *num);

MGraph BuildGraph()
{
    MGraph Graph;
    int i,j,k,weight;
    char a,b;

    Graph = (PtrToGNode)malloc(sizeof(struct GNode));

    scanf("%d %d",&Graph->Nv,&Graph->Ne);

    for(i = 0;i < Graph->Nv; i++)
    {
        getchar(); 
        scanf("%c",&Graph->Data[i]);  //输入顶点数据 
    }

    for(i = 0;i < Graph->Nv; i++)
       for(j = 0;j < Graph->Nv; j++)
            Graph->G[i][j] = INFINITY;  //初始化邻接矩阵

   /*此处输入边的信息*/
     for(k = 0;k < Graph->Ne ; k++)
    {

        getchar();
        scanf("%c %c %d",&a,&b,&weight);

        for( i = 0; Graph->Data[i] != a;i++) 
           ;   //找到顶点a在邻接矩阵中的下标 
        for( j = 0; Graph->Data[j] != b;j++) 
           ;   //找到顶点b在邻接矩阵中的下标

        Graph->G[i][j] = weight;
        Graph->G[j][i] = weight;
    }
    return Graph; 
 } 

int main()
{
    MGraph Graph1; 
    int num[100]={0};  //num统计各顶点的度
    int i;

    /* 建立图的邻接矩阵 */
    Graph1 = BuildGraph();

    degree(Graph1,&num[0]);
    for(i = 0;i < Graph1->Nv; i++)
    {
        printf("顶点%c的度为:%d",Graph1->Data[i],num[i]);
        printf("\n");
   }
    return 0;
}

a3bb691e-54b7-4a58-b8a4-c441eb3df882.png

输入样例:

5 8
A B C D E
A B 8
A E 4
B C 7
B D 12
B E 5
C D 6
C E 11
D E 3

 void degree(MGraph Graph,int *num)
{
    int i;
    for(int i=0;i<Graph->Nv;i++)
    {
        for(int j=0;j<Graph->Nv;j++)
        {
            if(Graph->G[i][j]!=INFINITY)
                num[i]++;
        }
    }
}

标签:num,int,Graph,邻接矩阵,---,++,无向,顶点
From: https://blog.csdn.net/2401_84341430/article/details/144774921

相关文章

  • 图---基于邻接矩阵表示的广度优先遍历
    6-3基于邻接矩阵表示的广度优先遍历实现基于邻接矩阵表示的广度优先遍历。函数接口定义:voidBFS(GraphG,intv);其中G是基于邻接矩阵存储表示的无向图,v表示遍历起点。裁判测试程序样例:#include<stdio.h>#include<stdlib.h>#defineMVNum10     ......
  • 7-Gin 中自定义控制器 --[Gin 框架入门精讲与实战案例]
    在Gin框架中,"控制器"通常指的是处理HTTP请求的逻辑。虽然Gin本身没有像一些其他框架(例如Django或RubyonRails)那样明确地定义"控制器"的概念,但你可以通过组织代码来实现类似的功能。Gin使用路由组和中间件来帮助组织你的应用程序逻辑。为了创建自定义控制器,你......
  • Python的秘密基地--[章节8] Python 数据科学与机器学习
    第8章:Python数据科学与机器学习随着大数据和人工智能的飞速发展,Python已成为数据科学和机器学习领域的首选编程语言。本章将深入探讨Python在数据科学和机器学习中的核心工具和技术,包括数据处理、可视化以及机器学习模型的构建。8.1数据科学简介8.1.1什么是数据科......
  • 学习012-02-03-14 How to: Reorder an Action Container‘s Actions Collection(如何:对
    Howto:ReorderanActionContainer’sActionsCollection(如何:对操作容器的操作集合进行重新排序)InanXAFapplicationUI,ActionsarelocatedwithinActionContainers.YoucanusetheActionBase.CategorypropertyandtheApplicationModel’sActionDesign......
  • 题目集7-8总结
    前言题目集的知识点、题量、难度1.知识点总结:类的定义与实例化:概念:定义类的属性和方法,创建对象示例:publicclassDevice{privateStringid;}应用:定义各种电气设备类并创建实例继承关系:概念:子类继承父类特征示例:classSwitchextendsDevice应用:所有具体设备......
  • BLOG-3 LYYYY
    第三次pta总结**7-1家居强电电路模拟程序-3**分数100作者蔡轲单位南昌航空大学智能家居是在当下家庭中越来越流行的一种配置方案,它通过物联网技术将家中的各种设备(如音视频设备、照明系统、窗帘控制、空调控制、安防系统、数字影院系统、影音服务器、影柜系统、网络家电......
  • 【江协STM32】6-3/4 TIM输出比较、PWM驱动LED呼吸灯&PWM驱动舵机&PWM驱动直流电机
    1.输出比较简介OC(OutputCompare)输出比较,主要用来输出PWM波输出比较可以通过比较CNT与CCR寄存器(捕获/比较寄存器)值的关系,来对输出电平进行置1、置0或翻转的操作,用于输出一定频率和占空比的PWM波形CCR:使用输入捕获时,它就是捕获寄存器;使用输出比较时,它就是比较寄存器。在输出比......
  • 学期:2024-2025-1 学号:20241303 《计算机基础与程序设计》第十四周学习总结
    作业信息这个作业属于哪个课程<班级的链接>(如2024-2025-1-计算机基础与程序设计)这个作业要求在哪里<作业要求的链接>(如2024-2025-1计算机基础与程序设计第十四周作业)这个作业的目标<写上具体方面>《C语言程序设计》第13-14章并完成云班课测试作业正文...本......
  • Bootstrap模态框使用WebUploader点击失效问题 - Bootstrao模态框弹出后内置js函数未起
    解决方案参考: https://blog.csdn.net/superdog007/article/details/78716352webuploader官网: https://fex-team.github.io/webuploader/getting-started.html 问题原因: 模态框弹出后,但是加载的js函数并未执行到html元素,但是F12页面查看元素后又显示正常, 解决: 在模态......
  • 【江协STM32】6-1/2 TIM定时中断、定时器定时中断&定时器外部时钟
    1. TIM定时中断1.1TIM简介TIM(Timer)定时器定时器可以对输入的时钟进行计数,并在计数值达到设定值时触发中断16位计数器(执行计数定时的一个寄存器,每来一个时钟,计数器加1)、预分频器(可以对计数器的时钟进行分频,使计数更灵活)、自动重装寄存器(计数的目标值,就是想要计多少个时钟申......