美文网首页
数据结构之图的基本操作

数据结构之图的基本操作

作者: NicholasJosh | 来源:发表于2021-01-23 00:37 被阅读0次

一、判断图G是否存在边 <x, y> 或 (x, y)

1.1 如何判断无向图是否存在边 (C, D) ?

图G
1.1.1 邻接矩阵法判断
邻接矩阵法

邻接矩阵表示法可以根据顶点C和D确认边在数组中的位置G(2,3)位置上存储的数字为1(如上图红色虚线框所示,也可以取G(3,2)位置上存储的数字),所以确定边 (C, D) 存在

1.1.2 邻接表法
邻接表法

邻接表法需要遍历C顶点的所有链表(如上图红色虚线框所示,也可以遍历D顶点的所有链表找出是否有C的边表),找出是否有顶点D的边表,从图中可知遍历到第二个节点时就可以确认存在边 (C, D)

对比两种方式,我们发现邻接矩阵法只需要判断一个值,比邻接表法更高效

1.2 如何判断有向图是否存在边 <C, D> ?

1.2.1 邻接矩阵法判断
邻接矩阵法

邻接矩阵表示法可以根据顶点C和D确认边在数组中的位置G(2,3)位置上存储的数字为1(如上图红色虚线框所示),所以确定边 <C, D> 存在

1.2.2 邻接表法判断
邻接表法

邻接表法需要遍历C顶点的所有链表(如上图红色虚线框所示),找出是否有顶点D的边表,从图中可知遍历到第二个节点时就可以确认存在边 <C, D>

对比两种方式,我们发现邻接矩阵法判断有向图同样只需要判断一个值,比邻接表法更高效

二、列出图G中与结点X邻接的边

2.1 如何判断无向图G中与结点B邻接的边

2.1.1 邻接矩阵法判断
邻接矩阵法

邻接矩阵表示法可以遍历顶点B所在的行的所有数字为1的数量来确定与结点B邻接的边(如上图红色虚线框所示),所以确定邻接的边有两条 (A,B) 和 (B,C)

2.1.2 邻接表法
邻接表法

邻接表法只需要遍历顶点B的所有链表即可确定邻接的边有两条 (A,B) 和 (B,C)

对比两种方式,我们发现邻接表法只需要遍历链表即可,比邻接矩阵法更高效

2.2 如何判断有向图G中与结点B邻接的边

2.2.1 邻接矩阵法判断
邻接矩阵法

邻接矩阵表示法可以遍历顶点B所在的行的数字为1的数量来确定出度,所在列的数字为1的数量来确定入度,入度加出度即为结点B邻接的边,所以确定邻接的边有两条 <B,A> 和 <B,C>

2.2.2 邻接表法
邻接表法

邻接表法则需要遍历所有顶点的所有链表才可以确定邻接的边有两条<B,A> 和 <B,C>

对比两种方式,我们发现邻接矩阵法只需要遍历与结点B相关的数据,比邻接表法更高效

三、在图G中插入顶点F

3.1 邻接矩阵法

邻接矩阵法

邻接矩阵法结点数组尾部新增一个结点,二维数组新增行尾新增一行默认值全为0,列尾新增一列默认值全为0即可

3.2 邻接表法

邻接表法

邻接表法顶点数组尾部新增一个结点,链表为空即可

四、从图G中删除顶点A

4.1 邻接矩阵法

邻接矩阵法

邻接矩阵法将结点数组A的位置置空,边表A所在的行和列数据全部置空即可

4.2 邻接表法

邻接表法

邻接表法将结点数组A的引用置空即可

五、若无向边 (A,D) 或者邮箱边 <A,D> 不存在,则向图G中添加该边

5.1 邻接矩阵法

邻接矩阵法

邻接矩阵法无向图需要把 G(0,3) 和 G(3,0) 的值修改为1即可
邻接矩阵法无向图需要把 G(0,3)的值修改为1即可

5.2 邻接表法

邻接表法

邻接表法无向图需要把顶点A和顶点D的边链表分别增加一个边结点即可
邻接表法有向图需要把A的边链表增加一个边结点即可

六、若无向边 (B,C) 或者有向边 <B,C> 存在,则在图G中删除该边

6.1 邻接矩阵法

邻接矩阵法

邻接矩阵法无向图需要把 G(1,2) 和 G(2,1) 的值修改为0即可
邻接矩阵法有向图需要把 G(1,2) 的值修改为0即可

6.2 邻接表法

邻接表法

邻接表法无向图需要把结点B的边链表中的2边删除,结点C的遍链表中的1边删除即可
邻接表法邮箱边需要吧结点B的边链表中的2边删除接口

七、邻接点操作

邻接点操作

八、权值操作

权值操作

相关文章

  • 数据结构之图的基本操作

    一、判断图G是否存在边 或 (x, y) 1.1 如何判断无向图是否存在边 (C, D) ? 1.1...

  • 2018-04-30 算法复杂度

    数据结构操作 数组排序算法 图操作 堆操作 大O复杂度图表

  • 算法复杂度速查表

    图例 数据结构操作 数组排序算法 图操作 堆操作 大 O 复杂度图表

  • 2021 408 计算机大纲

    数据结构 【考查目标】 掌握数据结构的基本概念、基本原理和基本方法。 掌握数据的逻辑结构、存储结构及基本操作的实现...

  • es6的set和map

    一、set数据结构 运行结果:图1.1 add操作图1.2 delete操作图1.3 其他方法 二、map数据结构...

  • 专业课考纲

    数据结构 【考查目标】1.掌握数据结构的基本概念、基本原理和基本方法。2.掌握数据的逻辑结构、存储结构及基本操作的...

  • 图-基本操作

    //TODO

  • SQL的一些基础知识

    SQL必学的一些基本概念 数据结构描述了组成数据库的基本成分,数据操作描述了对数据结构允许执行的操作集合,数据完整...

  • 【Redis】Redis中5种基础数据结构以及相应的命令行和Py

    本文主要介绍了Redis中5种基本的数据结构,以及相应的数据操作命令。 Redis基本数据结构 Redis是键值对...

  • 第二讲 线性结构

    Part 1 线性表及其表现 含义:一种数据结构、数据对象集(n个元素构成的有序序列)基本操作: 下面这张图 具体...

网友评论

      本文标题:数据结构之图的基本操作

      本文链接:https://www.haomeiwen.com/subject/wszezktx.html