• python-数据结构代码 图(邻接表)


    class Vertex:
        def __init__(self,key):
            self.id=key
            self.connectedTo={}
        
        def addNeighbor(self,nbr,weight=0):
            self.connectedTo[nbr]=weight
        
        def __str__(self):
            return str(self.id)+' connectedTo: '+str([x.id for x in self.connectedTo])
    
        def getConnections(self):
            return self.connectedTo.keys()
    
        def getId(self):
            return self.id
        
        def getWeight(self,nbr):
            return self.connectedTo[nbr]
    
    class Graph:
        def __init__(self):
            self.vertList={}
            self.numVertices=0
    
        def addVertex(self,key):
            self.numVertices=self.numVertices+1
            newVertex=Vertex(key)
            self.vertList[key]=newVertex
            return newVertex
    
        def getVertex(self,n):
            if n in self.vertList:
                return self.vertList[n]
            else:
                return None
    
        def __contains__(self,n):
            return n in self.vertList
    
        def addEdge(self,f,t,cost=0):
            if f not in self.vertList:
                nv=self.addVertex(f)
            if t not in self.vertList:
                nv=self.addVertex(t)
            self.vertList[f].addNeighbor(self.vertList[t],cost)
    
        def getVertices(self):
            return self.vertList.keys()
    
        def __iter__(self):
            return iter(self.vertList.values())
    
    g=Graph()
    for i in range(6):
        g.addVertex(i)
    print(g.vertList)
    g.addEdge(0,1,5)
    g.addEdge(0,5,2)
    g.addEdge(1,2,4)
    g.addEdge(2,3,9)
    g.addEdge(3,4,7)
    g.addEdge(3,5,3)
    g.addEdge(4,0,1)
    g.addEdge(5,4,8)
    g.addEdge(5,2,1)
    for v in g:
        for w in v.getConnections():
            print("(%s,%s)"%(v.getId(),w.getId()))
  • 相关阅读:
    死磕 java线程系列之自己动手写一个线程池(续)
    Spring Boot (十): Spring Boot Admin 监控 Spring Boot 应用
    opencv之为图像添加边界
    协作,才能更好的中断线程
    Java并发——线程池Executor框架
    神经网络dropout
    xgboost
    物体检测-毕业设计项目回顾
    计算机网络-TCP连接
    gbdt推导和代码
  • 原文地址:https://www.cnblogs.com/lely/p/10170295.html
Copyright © 2020-2023  润新知