首页 > 解决方案 > 使用节点{链表方式}难以理解具有邻接表表示的图

问题描述

class AdjNode: 
    def __init__(self, data): 
        self.vertex = data 
        self.next = None

Size of the array will be the no. of the 
# vertices "V" 
class Graph: 
    def __init__(self, vertices): 
        self.V = vertices 
        self.graph = [None] * self.V 

    # Function to add an edge in an undirected graph 
    def add_edge(self, src, dest): 
        # Adding the node to the source node 
        node = AdjNode(dest) 
#from here
        node.next = self.graph[src] 
        self.graph[src] = node
#to here 
        node = AdjNode(src) 
        node.next = self.graph[dest] 
        self.graph[dest] = node

if __name__ == "__main__": 
    V = 5
    graph = Graph(V) 
    graph.add_edge(0, 1) 
    graph.add_edge(0, 4) 
    graph.add_edge(1, 2) 
    graph.add_edge(1, 3) 
    graph.add_edge(1, 4) 

    graph.print_graph() 

我不明白评论中从这里到这里的部分。请解释。我什至尝试过 python 导师可视化工具。不过其他的都明白了。此代码来自 geeksforgeeks 页面https://www.geeksforgeeks.org/graph-and-its-representations/ 任何帮助将不胜感激。

标签: pythonalgorithmdata-structuresgraph

解决方案


解释

有问题的代码行是在链表开头插入项目的标准方式。

参考

脚步

  1. 创建一个新节点
node = AdjNode(dest)
  1. 将新节点放在列表的头部

    通过将其更新到现有列表头的旁边来完成

node.next = self.graph[src] 
  1. 将头部分配给新节点
self.graph[src] = node

推荐阅读