图的基本操作

  • 基本操作:
  • 判断边是否存在:
  • 列出与某节点相邻的边:
  • 在图中插入一个顶点:
  • 在图中删除一个顶点:
  • 在图中添加一条边:
  • 在图中删除一个边:
  • 查找某顶点的第一个邻接点:
  • 查找某边的权值:
  • 查找某一顶点邻接点的下一个邻接点:

基本操作:

判断边是否存在:


ps:
在邻接表中,要搜索某节点的整个边表才能找到是否存在边,O(1)~O(|v|)
在邻接矩阵中,只需要判断该边对应数组位置的值即可,O(1)
所以从判断是否存在边的角度看,邻接矩阵法更优

列出与某节点相邻的边:


无向图:
在邻接矩阵中,只需要搜索对应行对应列即可,O(|V|)
在邻接表中,只需要遍历该节点的边表即可,O(1)~O(|V|)
所以在无向图中, 列出与某节点相邻的边时邻接表法更优
有向图:
在邻接矩阵中,只需要搜索对应行对应列即可,O(|V|)
在邻接表中,出边很容易,但是找入边需要遍历整个边表:
1、寻找出边:O(1)~O(|V|)
2、寻找入边:O(|E|) (遍历所有的边节点)
所以在有向图中,列出与某节点相邻的边时邻接矩阵法更优(但是存储稀疏图,E比较小)

在图中插入一个顶点:

ps:
在邻接表法中,将该顶点加入到顶点表中将边的关系加入到边表中,O(1)
在邻接矩阵法中,扩充一行和一列,放置对应关系,O(1)

在图中删除一个顶点:

无向图:

ps:
在邻接表法中,删除该节点和对应的边表即可,O(|V|)
在邻接矩阵法中,删除该顶点对应的行与列即可,有以下两种情况,O(1)~O(|E|)
1、将后续元素前移,用D覆盖C,但是会让大量元素移动,代价太大
2、将删除节点对应行列置0,在顶点结构体中设置bool变量来标记节点的空

有向图:

在图中添加一条边:

ps:
在邻接表法中,在俩端节点的边表添加该边,O(1)
在邻接矩阵法中,把对应的俩个矩阵值修改即可,O(1)(头插法优于尾插法,O(1)是头插法的时间复杂度,尾插法还需要遍历边表)

在图中删除一个边:


ps:
在邻接表法中,遍历整个边表找到对应的边表节点,然后删除
在邻接矩阵法中,只需要修改对应位的值即可
所以在在删除边的操作中,邻接矩阵法更优

查找某顶点的第一个邻接点:

邻接矩阵:O(1)~O(|V|)
邻接表:O(1)

查找某边的权值:

核心问题:找边
邻接矩阵:O(1)
邻接表:O(1)~O(|V|)

查找某一顶点邻接点的下一个邻接点:

邻接矩阵:O(1)~O(|V|)
邻接表:O(1)

数据结构之图的基本操作相关推荐

  1. C++数据结构实验--图的基本操作

    实验四 图的基本操作 1.实验内容与要求 理解邻接矩阵和邻接表的概念 任选一种存储方式实现以下操作:图的构造.深度优先遍历以及广度优先遍历 选作:最小生成树和最短路径. 2.实验环境 硬件环境:计算机 ...

  2. 【数据结构】图的基本操作

    一.问题描述 分别以邻接矩阵和邻接表作为存储结构,实现以下图的基本操作: 增加一个新结点v,Insert(G,v): 删除顶点v及其相关的边,Delete(G,v): 增加一条边<v,w> ...

  3. 图的基本操作(数据结构实验报告)

    数据结构 之 图的基本操作 实验报告 文章目录 数据结构 之 图的基本操作 实验报告 一. 实验目的 二. 实验内容 三.实验要求 四. 代码 五.运行结果 一. 实验目的 ​ (1)理解图的基本术语 ...

  4. 图的基本操作实现(数据结构实验)

    实验项目六 图结构基本操作的实现 课程名称:数据结构 实验项目名称:图结构基本操作的实现 实验目的: 1.掌握图的基本操作-遍历. 实验要求: 1.    分别用DFS和BFS的方法实现一个无向图的遍 ...

  5. python数据结构实验目的_图的基本操作实现(数据结构实验)

    课程名称:数据结构 实验项目名称:图结构基本操作的实现 实验目的: 1.掌握图的基本操作-遍历. 实验要求: 1. 分别用DFS和BFS的方法实现一个无向图的遍历. 实验过程: 1. 创建一个图(可用 ...

  6. 数据结构-图-邻接矩阵-试在邻接矩阵存储结构上实现图的基本操作 matrix_insert_vertex 和matrix_insert_arc-icoding

    邻接矩阵 试在邻接矩阵存储结构上实现图的基本操作 matrix_insert_vertex 和matrix_insert_arc,相关定义如下: typedef int VertexType;type ...

  7. 0102数据结构和图处理算法-无向图-数据结构和算法(Java)

    文章目录 1 数据类型 2 图的表示方法 3 无向图的实现 4 图处理算法的设计模式 后记 1 数据类型 要处理各种图的算法,我们首先看一份定义了图的基本操作的API,如下表1-1所示: public ...

  8. 【数据结构 图】数据结构实验--图及其应用

    数据结构实验–图及其应用 (代码有一些纰漏 仅供自己后期修改保存用) 数据结构上机实验 题目:设计并验证如下算法: 带权图采用邻接表表示,实现无向图的广度优先搜索BFS与有向图的深度优先搜索DFS. ...

  9. 数据结构树的基本操作_《数据结构》树的基本操作.doc

    <数据结构>树的基本操作 实验四 课程名称:完成日期:姓名:学号:指导教师:实验名称:实验序号:实验成绩:一.实验目的及要求 二.实验环境.实验内容 求出它的深度. .调试过程及实验结果 ...

最新文章

  1. 关于MySQL的酸与MVCC和面试官小战三十回合
  2. golang json数据的处理 动态key 动态字段
  3. android使用okthtp
  4. /bin和/lib文件夹的区别
  5. HJ23 删除字符串中出现次数最少的字符
  6. php美化输入框代码,两句代码让你的zblogphp文章字段输入框加上ue编辑器功能
  7. 学计算机申请书100字,加入学生会申请书100字范文
  8. Linux最大能创建多少用户,如何在Linux中创建多个用户帐户?
  9. Unity轻松制作俯视角游戏插件TopDown Engine
  10. php 读取本地excel文件,PHP读取Excel文件的简单示例
  11. 不是技术牛人,如何拿到国内IT巨头的Offer
  12. 给视频加上自己想要的水印,再也不用担心被盗图了
  13. 中国移动数据分析的七点经验
  14. one class SVM
  15. 2019年12月7日周总结
  16. app应用分发平台|苹果ios超级签名|APP封装打包|应用内测托管平台|iOS应用企业签名|Android应用上传内测-虾分发
  17. 《平衡掌控者 游戏数值战斗设计》学习笔记(二)人物基础属性设计
  18. QSlider美化规则
  19. 计算机二级c语言程序设计改错,2017年计算机二级C语言上机改错题考点总结
  20. opencv h264压缩视频

热门文章

  1. 经典面试题(32):以下代码将输出的结果是什么?
  2. web前端警惕:意料之外的全局变量声明
  3. 生信宝典Linux学习系列文章整理
  4. java immutable系列_Java Immutable类代码示例
  5. git灰度发布版本_spring cloud灰度发布
  6. 第50课 书香阁的座位数
  7. 31销售是让用户用到货真价实的产品
  8. 学什么c语言标准,C语言的标准 “输入输出”!今天是你学C语言的第几天?
  9. python决策树逻辑回归_百面机器学习(逻辑回归以及决策树,leetcode)
  10. 求一列数据中的波峰_用python进行数据分析的套路