Java数据结构和算法-图的基本介绍和存储形式

图基本介绍

为什么要有图

1、前面我们学了线性表和树
2、线性表局限与一个直接前驱和一个直接后继的关系
3、树也只能有一个直接前驱也就是父节点
4、当我们需要表示多对多的关系时,这里我们就用到了图

图的举例说明

图是一种数据结构,其中结点可以具有零个或多个相邻元素。两个结点之间的连接称为边。结点也可以称为顶点。如图:



图的常用概念

1、顶点(vertex)
2、边(edge)
3、路径
4、无向图(如图)


无向图:顶点之间的连接没有方向,比如A-B,既可以是A->B也可以B->A
路径:比如从D->C的路径有

  • D->B->C
  • D->A->B->C

5、有向图



6、带权图
带权图:这种边带权值的图也叫网


图的表示方式

图的表示方式有两种: 二维数组表示(邻接矩阵)、链表表示(邻接表)。
邻接矩阵
邻接矩阵是表示图形中顶点之间相邻关系的矩阵,对于n个顶点的图而言,矩阵是row和col表示的是1...n个点。


邻接表
1、邻接矩阵需要为每个顶点都分配n个边的空间,其实有很多边都是不存在,会造成空间的一定损失。
2、邻接表的实现只关心存在的边,不关心不存在的边。因为没有空间浪费,邻接表由数组+链表组成。

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 为什么要有图 前面我们学了线性表和树线性表局限于一个直接前驱和一个直接后继的关系树也只能有一个直接前驱也就是父节点...
    是小猪童鞋啦阅读 429评论 0 0
  • 一、为什么要有图 线性表局限于一个直接前驱和一个直接后继的关系 树也只能有一个直接前驱也就是父节点 当我们需要表示...
    Patarw阅读 761评论 0 0
  • 邻接矩阵 考虑到图是由顶点和边或弧两部分组成。合在一起比较困难,那就很自然地考虑到分两个结构来分别存储。顶点不分大...
    Joker_King阅读 567评论 1 0
  • 一些概念 数据结构就是研究数据的逻辑结构和物理结构以及它们之间相互关系,并对这种结构定义相应的运算,而且确保经过这...
    Winterfell_Z阅读 6,489评论 0 13
  • 概述 图是一种数据结构,其中结点可以具有零个或多个相邻元素。两个结点之间的连接称为边。 结点也可以称为顶点。 基本...
    先生zeng阅读 1,264评论 0 3

友情链接更多精彩内容