1. 程式人生 > >python-數據結構代碼 圖(鄰接表)

python-數據結構代碼 圖(鄰接表)

contain cte elf span list values ice connected self.

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()))

python-數據結構代碼 圖(鄰接表)