最近很火的数据动图python_GIF完美诠释Python数据结构的实现 图篇

「写在前面」兄弟萌 ppt动画和视频做起来确实很麻烦 你们看到不到30s的动图 我可能要做上一个小时 要把逻辑和动画完美结合确实有难度 请不要吝啬 点个赞再走吧

图的定义:研究形状和图形数据元素之间的关系,主要谈论几何形体在计算机内部的表示以及期间进行运算的基本方法。

作为程序员(媛)们的知识结晶,怎么可能那么轻易让你理解?

图分为两种:有向图和无向图:

图的存储结构:

此篇文章主要介绍邻接矩阵的图

有向图和无向图的数组表示, 0代表没有弧连接两个顶点,1代表有弧连接两个顶点

注意:节点和弧矩阵是分开存放的

建立连接

当我们要把N1和N2两个节点连接起来时,我们需要将弧矩阵中(1, 2)位置的数据置为1「无向图还需要把(2, 1)位置的数据置为1」

但是我们用的是一个一维数组 那如何表示(1, 2)的索引呢?

不难发现,1 * 节点个数(这里是4) + 2就是(1, 2)在一维数组里的索引

深度优先遍历知乎视频​www.zhihu.comzhihu-card-default.svg

这是实现的递归过程:

可能有些可有可无的步骤被break points吞掉了 不影响知乎视频​www.zhihu.comzhihu-card-default.svg

广度优先遍历知乎视频​www.zhihu.comzhihu-card-default.svg

这是实现的递归过程:

可能有些可有可无的步骤被break points吞掉了 不影响知乎视频​www.zhihu.comzhihu-card-default.svg

要注意的是 我们运行完深度/广度优先遍历其中一种之后,节点的IsVisited会被设置成True 在下一次遍历之前 需要调用reset_node函数 将所有节点的IsVisited置为False

图的普里姆算法和克鲁斯卡尔算法会在下一篇拓展文章中讲 敬请期待

代码:https://github.com/CodingDogzxg/data_structure/blob/master/mymap.py​github.com

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值