数据结构之图

这篇具有很好参考价值的文章主要介绍了数据结构之图。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

图是一种非线性结构,由顶点和边构成,我们可以将图抽象的表示为一组顶点和边的集合

我们将顶点看作节点,将边看作各个节点的引用(指针),我们就可以将图看作是一种从链表拓展过来的 数据结构

图的常见类型与属于

  • 根据边是否有方向,可以将图分为有向图和无向图
  • 在无向图中,边表示两个节点“双向链接”
  • 在有向图中,边具有方向性,即A->B和B->A两个边的方向是独立的

  • 根据所有节点是否连通,可以分为连通图和非连通图
  • 对于连通图,从某个节点出发,可以到达任意一个节点
  • 对于非连通图,从某个节点出发,至少有一个节点无法直接到达

  • 我们可以为边添加“权重”变量,从而得到有权图

常用术语:

  • 邻接:当两个节点之间存在边相连接时,这两个节点邻接
  • 路径:从顶点A到顶点B所构成的边的序列称为从A到B的路径
  • 度:一个顶点拥有的边数

图的表示

一般有“邻接矩阵”和“邻接表”表示

邻接矩阵

设图的顶点数量为 n,「邻接矩阵 adjacency matrix」使用一个 n×n 大小的矩阵来表示图,每一行(列)代表一个顶点,矩阵元素代表边,用 1 或 0 表示两个顶点之间是否存在边

  • 特性

    • 顶点不能与自身相连,因此邻接矩阵主对角线元素没有意义
    • 对于无向图,两个方向的边等价,此时邻接矩阵关于主对角线对称
    • 将邻接矩阵的元素从 1 和 0 替换为权重,则可表示有权图
    • 使用邻接矩阵表示图时,我们可以直接访问矩阵元素以获取边,因此增删查改操作的效率很高,时间复杂度均为 O(1) 。然而,矩阵的空间复杂度为 O(n2) ,内存占用较多。

邻接表

使用 n 个链表来表示图,链表节点表示顶点。第 n 个链表对应顶点 n ,其中存储了该顶点的所有邻接顶点

邻接表仅存储实际存在的边,而边的总数通常远小于 n2 ,因此它更加节省空间。然而,在邻接表中需要通过遍历链表来查找边,因此其时间效率不如邻接矩阵文章来源地址https://www.toymoban.com/news/detail-816950.html

到了这里,关于数据结构之图的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • C++数据结构之图的遍历——DFS和BFS(带有gif演示)

    图的遍历 指的是从某一个顶点开始,访问图中的其余顶点,使得每个顶点被且仅被访问一次。 本文着重介绍DFS和BFS的区别和过程,因此采用的是最简单的邻接矩阵来储存无向图并实现两种算法。 下面是一个我在b站看到的一个较浅显易懂的图遍历视频,大家可以用作参考:

    2024年02月07日
    浏览(41)
  • Tecplot数据结构——结构数据(结构网格)与非结构数据(非结构网格)

    结构数据可以是一维、二维或三维的,下面以二维的数据格式为例。 在记事本中写入以下字符,并将文件以.plt或.dat为后缀命名。 其中数据总数为I*J=20,结构数据顺序为point格式,顺序为:(I,J)=(1,1), (I,J)=(2,1), … (I,J)=(Imax,1), (I,J)=(1,2), (I,J)=(2,2), (I,J)=(Imax,2), … (I,J)=(Imax,Jmax).

    2024年02月15日
    浏览(52)
  • 数据结构与算法——数据结构有哪些,常用数据结构详解

    数据结构是学习数据存储方式的一门学科,那么,数据存储方式有哪几种呢?下面将对数据结构的学习内容做一个简要的总结。 数据结构大致包含以下几种存储结构: 线性表,还可细分为顺序表、链表、栈和队列; 树结构,包括普通树,二叉树,线索二叉树等; 图存储结构

    2024年02月15日
    浏览(57)
  • 算法 数据结构分类 数据结构类型介绍 数据结构线性非线性结构 算法合集 (一)

     数据结构分为:                            a.线性结构                            b.非线性结构  a.线性结构:                       数据与结构存在一对一的线性关系; a . 线性结构 存储 分为:                                   顺序存储

    2024年02月10日
    浏览(46)
  • 结构化数据、非结构化数据、半结构化数据

    结构化的数据一般是指可以使用关系型数据库表示和存储,可以用二维表来逻辑表达实现的数据。例如:需要多少个属性,每个属性什么类型,每个属性的取值范围等等,类似下图所示, 提前定义好了一个二维矩阵的元数据 ,包含有列名称、列的类型、列的约束等:   可见

    2024年02月09日
    浏览(53)
  • 【数据结构】何为数据结构。

    🚩 WRITE IN FRONT 🚩    🔎 介绍:\\\"謓泽\\\"正在路上朝着\\\"攻城狮\\\"方向\\\"前进四\\\" 🔎 🏅 荣誉:2021|2022年度博客之星物联网与嵌入式开发TOP5|TOP4、2021|2022博客之星TOP100|TOP63、阿里云专家博主、掘金优秀创作者、全网粉丝量6w+、全网访问量100w+ 🏅 🆔 文章内容由 謓泽 原创 如需相关

    2024年02月08日
    浏览(55)
  • 【数据结构(一)】初识数据结构

    ❣博主主页: 33的博客❣ ▶文章专栏分类: Java从入门到精通◀ 🚚我的代码仓库: 33的代码仓库🚚 🫵🫵🫵 关注我带你学更多数据结构知识 数据结构是计算机存储,组织数据的方式,指相互之间存在一种或多种特定关系的数据元素的集合,从这篇文章开始,我们将一起进入数

    2024年04月09日
    浏览(54)
  • 【数据结构】什么是数据结构?

    🦄 个人主页 :修修修也 🎏 所属专栏 :数据结构 ⚙️ 操作环境 : Visual Studio 2022 目录 🎏数据结构的定义 🎏结语 数据结构(Data Structure)是计算机 存储 , 组织数据的方式 ,指 相互之间存在一种或多种特定关系的数据元素的集合 . 这么讲可能有些抽象,放一张图大家可能好理解一

    2024年02月07日
    浏览(45)
  • 数据结构和算法——数据结构

    目录 线性结构  队列结构的队列 链表结构的队列 链表的面试题 单向链表应用场景 约瑟夫环问题 栈结构 中缀表达式 前缀表达式 后缀表达式 非线性结构 图 递归解决迷宫问题 递归解决八皇后问题 顺序存储方式,顺序表 常见的顺序存储结构有:数组、队列、链表、栈 链式存

    2024年02月07日
    浏览(49)
  • 数据结构初探:揭开数据结构奥秘

    🌈个人主页: 聆风吟 🔥系列专栏: 数据结构、算法模板、汇编语言 🔖少年有梦不应止于心动,更要付诸行动。      💬 文章主要介绍:本系列主要对数据结构的进行由浅入深的讲解,希望对你今后的学习有一定的帮助。如果有发现错误的地方还请在评论区告知,非

    2024年02月02日
    浏览(48)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包