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

Posted yangly

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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()))

 

以上是关于python-数据结构代码 图(邻接表)的主要内容,如果未能解决你的问题,请参考以下文章

求算法,用邻接矩阵和邻接表创建一个图,实现深度和广度搜索,菜单形式,c语言的代码。无向无权的图。

数据结构—图邻接表存储基本运算算法图的遍历

数据结构与算法图 ( 图的存储形式 | 图的基本概念 | 图的表示方式 | 邻接矩阵 | 邻接表 | 图的创建 | 代码示例 )

(王道408考研数据结构)第六章图-第二节1:图的存储结构(邻接矩阵邻接表十字链表和邻接多重表)

无权无向图,用邻接表存储,求各个顶点之间的最小边数,求c++或c代码。十分感谢啊

邻接矩阵和邻接表存储的图的基本操作及完整代码