zoukankan      html  css  js  c++  java
  • 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()))
  • 相关阅读:
    SuperMemo UX 添加笔记 Ctrl+H
    SuperMemo概念初识(摘录)
    win7安装office2013过程中出现 office 15 click-to-run extensibility component提示
    Automactically loading LSP files
    droppable的详细参数讲解
    PHP定时执行任务的实现
    随机数的妙用
    cursor的形状
    ajax防止重复提交请求1
    使用JS截取字符串函数详解
  • 原文地址:https://www.cnblogs.com/lely/p/10170295.html
Copyright © 2011-2022 走看看