首页 > 其他分享 >邻接矩阵存储无向图

邻接矩阵存储无向图

时间:2023-08-29 11:45:51浏览次数:35  
标签:存储 int Graph 邻接矩阵 无向 MaxVertexNum include

没有使用矩阵的压缩存储

#include <stdlib.h>
#include <stdio.h>

#define MaxVertexNum 20

typedef struct{
    int Vex[MaxVertexNum];                    //存储顶点 
    int Edge[MaxVertexNum][MaxVertexNum];    //存储边 
    int VexNum;                                //顶点个数 
}Graph;

void InitGraph(Graph &G)
{
    int i,j;
    for(i=0;i<MaxVertexNum;i++)
    {
        G.Vex[i]=0;                            //顶点值初始化为0 
        for(j=0;j<MaxVertexNum;j++)            
            G.Edge[i][j]=0;                    //邻接矩阵中的元素初始化为0 
    }
    G.VexNum=0;                                //顶点个数初始化为0 
}

bool CreateGraph(Graph &G)
{
    int MaxNum,i,j;
    printf("图的顶点个数为:");
    scanf("%d",&MaxNum);
    if(MaxNum<=0)
        return false;
    G.VexNum=MaxNum;
    
    printf("输入顶点值:\n");
    for(i=0;i<G.VexNum;i++)
    {
        scanf("%d",&G.Vex[i]);    
    }
    
    printf("输入(0/1)到邻接矩阵:\n");
    for(i=0;i<G.VexNum;i++)
    {
        for(j=0;j<G.VexNum;j++)
            scanf("%d",&G.Edge[i][j]);
    }
}

bool isValid(Graph G)
{
    //判断是否为空 
    if(G.VexNum<=0)
    {
        printf("图空\n");
        return false;
    }
    
    //判断对角线元素是否非0 
    for(int i=0;i<G.VexNum;i++)
    {
        if(G.Edge[i][i]!=0)
        {
            printf("对角线元素非0\n");
            return false;
        }
    }
    
    //判断矩阵是否对称 
    for(int i=0;i<G.VexNum;i++)
    {
        for(int j=0;j<G.VexNum;j++)
        {
            if(G.Edge[i][j]!=G.Edge[j][i])
            {
                printf("矩阵不对称\n");
                return false;
            }
        }
    }
    return true;
}

void DisplayGraph(Graph G)
{
    int i,j;
    printf("顶点结点:\n");
    for(i=0;i<G.VexNum;i++)
    {
        printf("%d  ",G.Vex[i]);
    }
    printf("\n");
    printf("邻接矩阵:\n");
    for(i=0;i<G.VexNum;i++)
    {
        for(j=0;j<G.VexNum;j++)
        {
            printf("%d  ",G.Edge[i][j]);
            if(j==G.VexNum-1)
            printf("\n");
        }
    }
}

int main()
{
    Graph G;
    InitGraph(G);
    CreateGraph(G);
    if(isValid(G)) 
        DisplayGraph(G);
    return 0;
}

 

 

标签:存储,int,Graph,邻接矩阵,无向,MaxVertexNum,include
From: https://www.cnblogs.com/simpleset/p/17664342.html

相关文章

  • 智能存储控制器行业市场调查趋势分析报告2023-2029
    2023-2029全球智能存储控制器行业调研及趋势分析报告2022年全球智能存储控制器市场规模约亿元,2018-2022年年复合增长率CAGR约为%,预计未来将持续保持平稳增长的态势,到2029年市场规模将接近亿元,未来六年CAGR为%。从核心市场看,中国智能存储控制器市场占据全球约%的市场份额,为全......
  • 安防视频监控平台EasyCVR视频集中存储平台接入RTSP设备出现离线情况的问题解决方案
    安防视频监控/视频集中存储/云存储/磁盘阵列EasyCVR平台可拓展性强、视频能力灵活、部署轻快,可支持的主流标准协议有国标GB28181、RTSP/Onvif、RTMP等,以及支持厂家私有协议与SDK接入,包括海康Ehome、海大宇等设备的SDK等。平台既具备传统安防视频监控的能力,也具备接入AI智能分析的......
  • 1.操作系统(基本分页存储管理的基本概念)
    1.操作系统(基本分页存储管理的基本概念)连续分配:为用户进程分配的必须是一个连续的内存空间。非连续分配:为用户进程分配的可以是一些分散的内存空间。1.思考:连续分配方式的缺点考虑支持多道程序的两种连续分配方式:1.固定分区分配:缺乏灵活性,会产生大量的内部碎片,内存......
  • Dell UnityVSA 5.3 - 敏捷的软件定义存储
    DellUnityVSA5.3-敏捷的软件定义存储适用于SAN和NAS的软件定义的敏捷虚拟存储设备请访问原文链接:https://sysin.org/blog/dell-unityvsa-5/,查看最新版。原创作品,转载请保留出处。作者主页:sysin.orgDellUnityVSA适用于SAN和NAS的软件定义的敏捷虚拟存储设备VM......
  • podman 存储位置迁移
    使用podman容器时,podman会默认使用/var/lib/containers路径作为存储路径,可能会导致根磁盘空间占用过大。迁移过程一、关闭所有容器及容器服务注意在修改前需要关闭所有容器,可以使用Cockpit系统在Web中关闭容器及以下几个服务:podmanpodman-restartpodman-auto-updatecontain......
  • SQL SERVER 获取存储过程返回值
    1.OUPUT参数返回值CREATEPROCEDURE[dbo].[nb_order_insert](@o_buyeridint,@o_idbigintOUTPUT)ASBEGINSETNOCOUNTON;BEGININSERTINTO[Order](o_buyerid)VALUES(@o_buyerid)SET@o_id=@@IDENTITYENDEND存储过程中获得方法:......
  • 二叉树的存储结构和操作算法
    二叉树的存储结构和操作算法二叉树的存储结构1.顺序存储结构(完全二叉树/满二叉树)2.链式存储结构(一般二叉树).顺序存储结构按照满二叉树的结点层次编号,然依次后储存在数组当中如果该二叉树中位置是空的再对应到数组中的时候就使用0来填充.二叉树顺序存储结构的缺点......
  • 修改Docker镜像、容器、网络和卷等数据的存储位置|修改wsl在windows下的数据目录
    起因: 我发现这个C盘快要爆炸了C:\Users\Administrator\AppData\Local\Docker\wsl\data\ext4.vhdx(此目录是默认指向,都快100G了)解决步骤:wsl--shutdownwsl--exportdocker-desktop-dataE:\Docker\docker-desktop-data.tarwsl--unregisterdocker-deskto......
  • 视频汇聚/视频云存储/视频监控管理平台EasyCVR安全检查的相关问题及解决方法
    安防视频监控/视频集中存储/云存储/磁盘阵列EasyCVR平台可拓展性强、视频能力灵活、部署轻快,可支持的主流标准协议有国标GB28181、RTSP/Onvif、RTMP等,以及支持厂家私有协议与SDK接入,包括海康Ehome、海大宇等设备的SDK等。平台既具备传统安防视频监控的能力,也具备接入AI智能分析的......
  • 爬虫异常处理之如何处理连接丢失和数据存储异常
    在爬虫开发过程中,我们可能会遇到各种异常情况,如连接丢失、数据存储异常等。本文将介绍如何处理这些异常,并提供具体的解决代码。我们将以Python语言为例,使用requests库进行网络请求和sqlite3库进行数据存储。1.处理连接丢失连接丢失可能是由于网络不稳定、目标网站不可用等原因导致......