📜  Python中的链图(1)

📅  最后修改于: 2023-12-03 15:19:31.493000             🧑  作者: Mango

Python中的链图

链图是一个用于表示图形结构的数据结构,它由一系列的节点和边组成。在Python中,我们可以使用各种方式来实现链图,包括邻接矩阵、邻接列表和基于类的方式。

邻接矩阵实现链图

邻接矩阵是一种常见且简单的实现方式,它使用一个二维矩阵来表示节点之间的连接关系。在矩阵中,每个元素表示两个节点之间是否存在连接。如果节点i和节点j之间存在连接,则矩阵的第i行第j列和第j行第i列的元素值为1;否则,为0。

# 创建一个邻接矩阵
adj_matrix = [
    [0, 1, 0, 0],
    [1, 0, 1, 1],
    [0, 1, 0, 1],
    [0, 1, 1, 0]
]
邻接列表实现链图

邻接列表是另一种常见的链图实现方式,它使用一个字典来表示节点和其相邻节点的关系。字典的键是节点,而字典的值是一个列表,代表节点的相邻节点。

# 创建一个邻接列表
adj_list = {
    0: [1],
    1: [0, 2, 3],
    2: [1, 3],
    3: [1, 2]
}
基于类的方式实现链图

除了用矩阵和列表表示链图外,我们还可以使用基于类的方式来实现链图。通过定义节点类和链图类,我们可以更加灵活地操作和表示图形结构。

# 定义节点类
class Node:
    def __init__(self, value):
        self.value = value
        self.neighbors = []
    
    def add_neighbor(self, node):
        self.neighbors.append(node)

# 定义链图类
class Graph:
    def __init__(self):
        self.nodes = []
    
    def add_node(self, node):
        self.nodes.append(node)

# 创建链图对象
graph = Graph()

# 创建节点对象
node1 = Node(1)
node2 = Node(2)

# 添加节点到链图中
graph.add_node(node1)
graph.add_node(node2)

# 添加节点之间的连接关系
node1.add_neighbor(node2)
总结

Python提供了多种方式来实现链图,包括邻接矩阵、邻接列表和基于类的方式。选择适合自己需求的实现方式,可以更加方便地操作和处理图形结构的数据。