首页 > 编程语言 >Udemy——Python数据结构与算法(10)

Udemy——Python数据结构与算法(10)

时间:2025-01-05 20:30:10浏览次数:3  
标签:10 Python list self vertex Udemy graph my adj

 课程:【Udemy高分付费课程】Python数据结构与算法 - 终极 Python 编码面试和计算机科学训练营(中英文字幕)_哔哩哔哩_bilibili

Graph

基本代码

class Graph:
    def __init__(self):
        self.adj_list={}
    def print_graph(self):
        for vertex in self.adj_list:
            print(vertex,":",self.adj_list[vertex])

添加顶点 add_vertex

    def add_vertex(self, vertex):
        if vertex not in self.adj_list.keys():
            self.adj_list[vertex] = []
            return True
        return False


my_graph = Graph()

my_graph.add_vertex('A')

my_graph.print_graph()

添加边 add_edge

    def add_edge(self, v1, v2):
        if v1 in self.adj_list.keys() and v2 in self.adj_list.keys():
            self.adj_list[v1].append(v2)
            self.adj_list[v2].append(v1)
            return True




my_graph = Graph()

my_graph.add_vertex(1)
my_graph.add_vertex(2)

my_graph.add_edge(1,2)

my_graph.print_graph()

移除边 remove_edge

    def remove_edge(self, v1, v2):
        if v1 in self.adj_list.keys() and v2 in self.adj_list.keys():
            self.adj_list[v1].remove(v2)
            self.adj_list[v2].remove(v1)
            return True
        return False



my_graph = Graph()

my_graph.add_vertex("A")
my_graph.add_vertex("B")
my_graph.add_vertex("C")

my_graph.add_edge("A","B")
my_graph.add_edge("B","C")
my_graph.add_edge("C","A")

my_graph.remove_edge("A","B")

my_graph.print_graph()

移除顶点remove_vertex

    def remove_vertex(self,vertex):
        if vertex in self.adj_list.keys():
            for other_vertex in self.adj_list[vertex]:#遍历需要删除的顶点相关的边
                self.adj_list[other_vertex].remove(vertex)#一个个删除相关的边
            del self.adj_list[vertex]#删除顶点
            return True
        return False

完整代码

class Graph:
    def __init__(self):
        self.adj_list={}
    def print_graph(self):
        for vertex in self.adj_list:
            print(vertex,":",self.adj_list[vertex])
    def add_vertex(self, vertex):
        if vertex not in self.adj_list.keys():
            self.adj_list[vertex] = []
            return True
        return False
    def add_edge(self, v1, v2):
        if v1 in self.adj_list.keys() and v2 in self.adj_list.keys():
            self.adj_list[v1].append(v2)
            self.adj_list[v2].append(v1)
            return True
    def remove_edge(self, v1, v2):
        if v1 in self.adj_list.keys() and v2 in self.adj_list.keys():
            self.adj_list[v1].remove(v2)
            self.adj_list[v2].remove(v1)
            return True
        return False
    def remove_vertex(self,vertex):
        if vertex in self.adj_list.keys():
            for other_vertex in self.adj_list[vertex]:#遍历需要删除的顶点相关的边
                self.adj_list[other_vertex].remove(vertex)#一个个删除相关的边
            del self.adj_list[vertex]#删除顶点
            return True
        return False


my_graph = Graph()

my_graph.add_vertex("A")
my_graph.add_vertex("B")
my_graph.add_vertex("C")

my_graph.add_edge("A","B")
my_graph.add_edge("B","C")
my_graph.add_edge("C","A")

my_graph.remove_edge("A","B")

my_graph.print_graph()

标签:10,Python,list,self,vertex,Udemy,graph,my,adj
From: https://blog.csdn.net/Copomelo249/article/details/144857390

相关文章

  • Udemy——Python数据结构与算法(9)
      课程:【Udemy高分付费课程】Python数据结构与算法-终极Python编码面试和计算机科学训练营(中英文字幕)_哔哩哔哩_bilibili哈希表HashTable通过将键(Key)映射到表中一个位置来访问记录,以加快查找速度。简单来说,它就像一个“字典”,你可以通过一个“索引”(键)快速找到对应的内......
  • [20250106]关于日期输出格式问题2.txt
    [20250106]关于日期输出格式问题2.txt--//前几天测试写的例子如下$(echosetfeedoffheadoff;echo-e{D,d}{A,a}{Y,y}"\n"|xargs-IQecho"select'Q'str,to_char(sysdate,'Q')to_cfromdual;")|sqlplus-s-l/assysdba|sed'/......
  • 题解:UVA10482 The Candyman Can
    UVA10482TheCandymanCan思路记总重量为\(sum\)。因为\(n\le32\)所以可以暴力。使用动态规划,\(dp_{i,j}\)代表第\(1\)组重量为\(i\),第\(2\)组重量为\(j\)(则第\(3\)组重量为\(sum-i-j\))是否可以达到。最后再暴力枚举取所有\(\max(i,j,sum-i-j)-\min(i,j,sum-......
  • ssm学生奖惩管理系统+vue(10958)
     有需要的同学,源代码和配套文档领取,加文章最下方的名片哦一、项目演示项目演示视频二、资料介绍完整源代码(前后端源代码+SQL脚本)配套文档(LW+PPT+开题报告)远程调试控屏包运行三、技术介绍Java语言SSM框架SpringBoot框架Vue框架JSP页面Mysql数据库IDEA/Eclipse开发四、项......
  • ssm高校毕业生就业管理系统+jsp(10974)
     有需要的同学,源代码和配套文档领取,加文章最下方的名片哦一、项目演示项目演示视频二、资料介绍完整源代码(前后端源代码+SQL脚本)配套文档(LW+PPT+开题报告)远程调试控屏包运行三、技术介绍Java语言SSM框架SpringBoot框架Vue框架JSP页面Mysql数据库IDEA/Eclipse开发四、项......
  • ssm基于Java的校园二手物品交易平台的设计与实现+vue(10946)
     有需要的同学,源代码和配套文档领取,加文章最下方的名片哦一、项目演示项目演示视频二、资料介绍完整源代码(前后端源代码+SQL脚本)配套文档(LW+PPT+开题报告)远程调试控屏包运行三、技术介绍Java语言SSM框架SpringBoot框架Vue框架JSP页面Mysql数据库IDEA/Eclipse开发四、项......
  • [20250103]使用递归实现distinct功能.txt
    [20250103]使用递归实现distinct功能.txt--//生产系统遇到实际上许多条类似语句,顺便拿其中几个出来,真心不知道开发如何学计算机的。1.问题提出:SYS@127.0.0.1:9106/xtdb/xtdb2>@sql_idc29undaquszs6--SQL_ID=c29undaquszs6comefromsharedpoolselectdistinctritemfrom......
  • [20250103]distinct的函数实现.txt
    [20250103]distinct的函数实现.txt--//前天使用递归代替类似selectdistinctrtypefromroutine2;--//今天尝试使用函数是否可以实现,首先提一下,写pl/sql代码不是我擅长的工作,我的工作不需要写代码。--//主要目的仅仅为了学习。1.环境:SCOTT@book01p>@ver2=====================......
  • 分享一个音乐爬虫的python源码
    爬虫源码和打包后的EXE文件放在网盘了,可直接下载功能特点:-支持多个音乐源: -酷狗音乐 -QQ音乐 -咪咕音乐 -网易云音乐 -酷我音乐 -5sing音乐 -千千音乐-搜索功能: -按歌手搜索 -按歌曲名搜索(支持模糊匹配) -支持多关键词组合......
  • 【C++动态规划】2088. 统计农场中肥沃金字塔的数目|2104
    本文涉及知识点C++动态规划LeetCode2088.统计农场中肥沃金字塔的数目有一个矩形网格状的农场,划分为m行n列的单元格。每个格子要么是肥沃的(用1表示),要么是贫瘠的(用0表示)。网格图以外的所有与格子都视为贫瘠的。农场中的金字塔区域定义如下:区域内格子数......