Python全系列 教程
3567个小节阅读:5931.2k
目录
鸿蒙应用开发
C语言快速入门
JAVA全系列 教程
面向对象的程序设计语言
Python全系列 教程
Python3.x版本,未来主流的版本
人工智能 教程
顺势而为,AI创新未来
大厂算法 教程
算法,程序员自我提升必经之路
C++ 教程
一门通用计算机编程语言
微服务 教程
目前业界流行的框架组合
web前端全系列 教程
通向WEB技术世界的钥匙
大数据全系列 教程
站在云端操控万千数据
AIGC全能工具班
A A
White Night
xxxxxxxxxx
class Graph:
def __init__(self):
# 顶点
self.vertexes = []
# 矩阵
self.adj_matrix = []
def add_vertex(self, v):
'''添加顶点'''
# 判断顶点是否存在
if v not in self.vertexes:
# 将顶点添加到顶点列表
self.vertexes.append(v)
# 添加一列
for row in self.adj_matrix:
row.append(0)
# 添加一行
self.adj_matrix.append([0] * len(self.vertexes))
def add_edge(self, v1, v2):
'''添加边'''
# 判断顶点是否存在
if v1 in self.vertexes and v2 in self.vertexes:
# 获取顶点的下标
idx1 = self.vertexes.index(v1)
idx2 = self.vertexes.index(v2)
# 添加边
self.adj_matrix[idx1][idx2] = 1
self.adj_matrix[idx2][idx1] = 1
else:
print('顶点不存在')
def remove_vertex(self, v):
'''删除顶点'''
# 判断顶点是否存在
if v in self.vertexes:
# 获取顶点的下标
idx = self.vertexes.index(v)
# 删除顶点
self.vertexes.remove(v)
# 删除一行
self.adj_matrix.pop(idx)
# 删除一列
for row in self.adj_matrix:
row.pop(idx)
else:
print('顶点不存在')
def remove_edge(self, v1, v2):
'''删除边'''
# 判断顶点是否存在
if v1 in self.vertexes and v2 in self.vertexes:
# 获取顶点的下标
idx1 = self.vertexes.index(v1)
idx2 = self.vertexes.index(v2)
# 删除边
self.adj_matrix[idx1][idx2] = 0
self.adj_matrix[idx2][idx1] = 0
else:
print('顶点不存在')
def display(self):
'''打印图'''
for row in self.adj_matrix:
print(row)
if __name__ == '__main__':
my_graph = Graph()
# 添加顶点
my_graph.add_vertex('A')
my_graph.add_vertex('B')
my_graph.add_vertex('C')
my_graph.add_vertex('D')
print('没有增加边之前的图:')
my_graph.display()
# 增加边
my_graph.add_edge('A', 'B')
my_graph.add_edge('A', 'C')
my_graph.add_edge('A', 'D')
my_graph.add_edge('B', 'C')
print('增加边之后的图:')
my_graph.display()
# 删除边
my_graph.remove_edge('A', 'B')
print('删除边之后的图:')
my_graph.display()
# 删除顶点
my_graph.remove_vertex('B')
print('删除顶点之后的图:')
my_graph.display()