数据结构——图(图的存储及基本操作)

news2024/9/22 6:56:08

文章目录

  • 前言
  • 一、邻接矩阵法(顺序存储)
    • 1.无向图存储邻接矩阵算法
    • 2.有向图存储邻接矩阵算法
  • 二、邻接表法(图的链式存储结构)
  • 总结


前言

  1. 邻接矩阵法(图的顺序存储结构)
    1.1 无向图邻接矩阵算法
    1.2 有向图邻接矩阵算法
  2. 邻接表法(图的一种链式存储结构)

一、邻接矩阵法(顺序存储)

  1. 定义:用一个一维数组存储顶点,一个二维数组存储边的信息(各顶点之间邻接关系),n个顶点是n×n的矩阵,若(vi,vj)属于E ,则A[i][j]=1,否则等于0;对于带权图,则邻接矩阵中对应项存放着该边对应的权值,若顶点vi和vj不相连,则用∞来表示这两个顶点之间不存在边【是表示顶点之间相邻关系的矩阵。所谓两顶点的相邻关系即它们之间有边相连。】
  2. 注意
    ①无向图的邻接矩阵是对称矩阵,对规模特大的邻接矩阵可采用压缩存储
    ②邻接矩阵表示法的空间复杂的为O(n^2),其中n为图的定点数|V|
  3. 图的邻接矩阵存储表示法具有以下特点:
    1)无向图的邻接矩阵一定是一个对称矩阵(并且唯一),因此,在实际存储邻接矩阵时只需存储上(或下)三角矩阵的元素即可
    在这里插入图片描述
    在这里插入图片描述
    2)对于无向图,邻接矩阵的第i行(或第i列)非零元素(或非无穷元素)的个数正好是第i个顶点的度TD(vi)
    3)对于有向图,邻接矩阵的第i行(或第i列)非零元素(或非无穷元素)的个数正好是第i个顶点的出度OD(vi)(或入度ID(vi)),第i行和第i列和是有向图第i结点的度
    (有向图:行出度,竖入度)
    4)用邻接矩阵存储图,很容易确定图中任意两个顶点时间是否有边相连。但是,要确定图中有多少边,则必须按行、按列对每个元素进行检测,所花费的时间代价很大。这是用邻接矩阵存储图的局限性
    5)稠密图适合使用邻接矩阵的存储表示
    在这里插入图片描述
    在这里插入图片描述
  4. 无向图的邻接矩阵是对称的,如果A[i,j]=1,必有A[j,i]=1。这说明,只输入和存储其上三角阵元素即可得到整个邻接矩阵。
  5. 一般有向图的邻接矩阵是不对称的,A[i,j]不一定等于A[j,i]。
  6. 邻接矩阵用二维数组即可存储,定义如下:
    int adjmatrix = ARRAY[n][n];
  7. 如果图的各边是带权的,只需将矩阵中的各个1元素换成相应边的权即可。
    在这里插入图片描述
  8. 对于无向图而言:顶点Vi的度是邻接矩阵中第i行(或列)的元素之和。
  9. 对于有向图而言:
    顶点Vi的出度是邻接矩阵中第i行的元素之和。
    顶点Vi的入度是邻接矩阵中第i列的元素之和

1.无向图存储邻接矩阵算法

int creatgraph (int adjarray[ ][ ])
{
        int i,j,v1,v2,num;
        scanf (%d”,&num);   /*输入顶点数*/
        if (num>0)
       {
            for (i=1;i<=num;i++)
                 for (j=1;j<=num;j++)
                       adjarry [i][j]=0;   /*矩阵初始化*/
do{
               scanf (%d,%d”,&v1,&v2); /*输入边*/
                 adjarray[v1][v2]=1;
                 adjarray[v2][v1]=1;
            } while(v1!=0 && v2!=0);
       }
       else  
            num=0;
       return num;
 }
            

2.有向图存储邻接矩阵算法

int creatgraph (int adjarray[ ][ ])
{
        int i,j,v1,v2,num;
        scanf (%d”,&num);   /*输入顶点数*/
        if (num>0)
       {
            for (i=1;i<=num;i++)
                 for (j=1;j<=num;j++)
                       adjarry [i][j]=0;   /*矩阵初始化*/
do{
               scanf (%d,%d”,&v1,&v2); /*输入边*/
                 adjarray[v1][v2]=1;
            } while(v1!=0 && v2!=0);
       }
       else  
            num=0;
       return num;
 }
            

二、邻接表法(图的链式存储结构)

1.定义:对图G中每个顶点建立一个单链表,第i个单链表结点表示依附于顶点vi的边(有向图是以顶点vi为尾的弧)
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
2. 邻接表特点

(1)如果G为无向图,则所需存数空间为O(|V|+2|E|),若为有向图,则需O(|V+|E|)
(2)邻接表中给定一顶点,能够很容易找到所有邻边,而邻接矩阵中需要扫描一行,时间为O(n);但是若要确定两个顶点间是否存在边,则在邻接矩阵里可以立即查找,而在邻接表需要对相应结点的边表里查找另一结点,效率较低
(3)有向图邻接表中,求一个给定顶点的出度只需计算其邻接表结点个数,但要求入度,需遍历整表,也可用逆邻接表
(4)无向图设存储顶点的一维数组大小为m(m>=图的顶点数n),
图的边数为e,G占用存储空间为:m+2*e。(有向图)G占用存储空间与G的顶点数、边数均有关;适用于边稀疏的图
(5)有向图中
顶点Vi的出度为第i个单链表中的结点个数
顶点Vi的入度为整个单链表中邻接点域值是i的结点个数
判定两顶点v,u是否邻接:要看v对应线性链表中有无对应的结点u

在这里插入图片描述
在这里插入图片描述

总结

  1. 邻接矩阵法(图的顺序存储结构)
    1.1 无向图邻接矩阵算法
    1.2 有向图邻接矩阵算法
  2. 邻接表法(图的一种链式存储结构)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1013561.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

软文推广在企业中运用的优势有哪些?

随着互联网的发展&#xff0c;越来越多的企业在推广方式上已经逐渐脱离于传统媒体&#xff0c;软文推广已经成为了企业宣传的主要方式。也有不少企业来找盒子进行推广&#xff0c;接下来媒介盒子就来告诉大家&#xff0c;企业进行软文推广的优势有哪些&#xff1f; 成本低 传统…

neon常用指令(updating)

函数参考手册&#xff1a; https://developer.arm.com/architectures/instruction-sets/simd-isas/neon/intrinsics 并在左侧选择neon\ Neon 128bit寄存器,所以可支持并行运算 加快运算速度 减少循环 CPU运算比加载数据快&#xff0c;速度瓶颈在加载数据这里。 指令集命名…

为什么你觉得Odoo二次开发难?如何切入?

先说结论&#xff0c;学习Odoo开发&#xff0c;我建议从Odoo的开发者模式切入。事实上在Odoo官网很多问题的解决方案就是基于开发者模式的。 前天有位学了《Odoo开发者模式必知必会》课程的网友跟我说&#xff0c;他之前也花钱买了其他的Odoo开发、前端开发课程&#xff0c;但…

无涯教程-JavaScript - XOR函数

描述 XOR函数返回所有参数的逻辑异或。如果所提供条件的奇数判断为TRUE,则XOR函数返回TRUE,否则返回FALSE。 语法 XOR (logical1, [logical2],…)争论 Argument描述Required/Optionallogical1logical1 is required and subsequent logical values are optional.1 to 254 co…

【1++的C++进阶】之emplace详解

&#x1f44d;作者主页&#xff1a;进击的1 &#x1f929; 专栏链接&#xff1a;【1的C进阶】 在前面C11系列的文章里&#xff0c;我们漏掉了几个知识点&#xff0c;这篇文章对其中一个知识点进行讲解&#xff0c;关于剩余的知识点的文章在后面会相继出炉。 C11中&#xff0c;针…

网络广播模块2*30W 智能4G广播终端开发模块

SV-704UG 4G网络广播模块2*30W 智能4G广播终端开发模块 一、描述 SV-704UG网络音频模块是一款带2*30W功放输出的4G广播音频模块&#xff0c;采用高性能ARM处理器及专业Codec&#xff0c;能接收4G广播音频数据流&#xff0c;转换成音频模拟信号输出。带有一路line in输入&#…

分布式事务解决方案之可靠消息最终一致性

分布式事务解决方案之可靠消息最终一致性 什么是可靠消息最终一致性事务 可靠消息最终一致性方案是指当事务发起方执行完成本地事务后并发出一条消息&#xff0c;事务参与方(消息消费者)一定能 够接收消息并处理事务成功&#xff0c;此方案强调的是只要消息发给事务参与方最终…

java项目线上cpu过高如何排查

1、查看进程 # 查看cpu过高的进程 top -c2、拿着pid查找cpu过高的线程 # 查找 ps H -eo pid,tid,%cpu | grep 19235可以看到19236过高 3、线程转换16进制 printf "%x\n" 192364、查看代码地址 # 19235 进程 # 4b24 线程16进制 # -A20 前20行 jstack 19235 | gr…

回顾2023百度云智大会:人工智能的未来之路

原创 | 文 BFT机器人 在2023年的百度云智大会上&#xff0c;各界的科技专家、学者、企业家和创新者再次齐聚一堂&#xff0c;共同探讨和分享最新的人工智能、大数据、云计算等前沿技术和行业趋势。此次大会以"探索未来科技趋势"为主题&#xff0c;旨在引领行业对未来…

奥威BI系统:时刻跟着需求走,随需分析

面对同一张报表&#xff0c;不同浏览者有不同的需求&#xff0c;那怎么办&#xff1f;有能够时刻跟着浏览者需求走的数据分析报表吗&#xff1f;还真有&#xff0c;奥威BI系统随需分析&#xff0c;随时跟着需求走。 奥威BI系统中的报表就约等于一个平台&#xff0c;可随时展开…

科技资讯|Vision Pro头显无损音频仅限USB-C AirPods Pro 2耳机

彭博社的马克・古尔曼在最新发布的推文中表示&#xff0c;苹果 Vision Pro 头显的无损音频仅限于 USB-C AirPods Pro 2 耳机。 新款采用 USB-C 的 AirPods Pro 2 升级到了 IP54 级别&#xff08;原版不防尘&#xff0c;仅 IPX4 级抗水&#xff09;&#xff0c;可陪伴用户在恶劣…

el-table树形结构 当前行为子级时无高亮效果(已解决)

需求&#xff1a;el-table行点击时需要高亮当前行。 问题&#xff1a;当el-table为树形结构时&#xff0c;点击子级却无高亮效果。 问题描述 如图所示的树形表格&#xff1a; 点击父级有高亮效果&#xff0c;点击子级高亮效果消失。 问题分析 通过查看html源码发现高亮样式…

第一次部署机器学习模型

一、说明 自从我开始机器学习以来&#xff0c;Jupyter Notebooks一直是我最忠实的伙伴。从数据预处理到模型训练、微调和测试&#xff0c;Jupyter Notebooks 在每一步都为我提供支持。然而&#xff0c;我一直都知道&#xff0c;在这些数字页面之外&#xff0c;还有一个完整的世…

软件测试常问面试题

1、讲一下你最熟悉的模块是怎么测试的&#xff1f; 2、fiddler如何抓https请求&#xff1f; 步骤&#xff1a; 设置浏览器http代理 安装证书 导入证书&#xff0c;端口号8888 手机端获取fiddler的地址&#xff0c;配置无线局域网代理&#xff0c;安装手机证书。 3、jmeter如何参…

河北省图书馆典藏《乡村振兴振兴战略下传统村落文化旅游设计》许少辉八一新著

河北省图书馆典藏《乡村振兴振兴战略下传统村落文化旅游设计》许少辉八一新著

win10系统解决文件共享不安全, 需要smb1的问题

(1) 步驟一:Window按鍵加 q,搜选择控制命板 (2) 选择程序与功能 (3) 启用和关闭window功能 (4)勾上SM1 (4) 在打开的运行窗口中&#xff0c;输入命令gpedit.msc&#xff0c;然后点击确定按钮。 (5)在管理模板,打开Lanman工作站 (5) 启用不安全登录 (6)重启后生效

springboot web 增加不存在的url返回200状态码 vue 打包设置vue.js 单文件使用

spring boot项目增加 html web页面访问 1. 首先 application.properties 文件中增加配置&#xff0c;指定静态资源目录&#xff08;包括html的存放&#xff09; spring.resources.static-locationsclasspath:/webapp/,classpath:/webapp/static/ 2. 项目目录 3. 如果有实现 …

查询IP地址可得到哪些信息

通过IP地址定位&#xff0c;可以获取一些基本的信息&#xff0c;包括以下内容&#xff1a; 1. 地理位置&#xff1a;你可以确定IP地址所在的地理位置&#xff0c;包括国家、州或省、城市和地理坐标。这通常是通过将IP地址与地理位置数据库进行匹配来实现的。 2. ISP&#xff…

视频号爆款数据在哪里获取?

说到视频号爆款&#xff0c;很多人还是好奇在哪里获取&#xff0c;今天我们就来说视频号爆款数据排行榜&#xff0c;可以获取的链接地址方式有哪些&#xff01; 视频号爆款数据排行榜获取方式 该数据平台目前有微信公众号&#xff1a;视频下载plus提供开发支持&#xff0c;用户…

yolov5 v7.0自动标注

文章目录 1、概述2、使用 1、概述 在学习深度学习的时候有一个非常头疼的事情就是标注&#xff0c;特别浪费时间和费眼睛&#xff0c;最近在网上发现博主开源了自动标注的程序&#xff0c;原理是&#xff0c;通过训练好的模型&#xff0c;对图像进行推理&#xff0c;通过推理出…