|
因为作业要求,我用python写了个图,添加边时结果很奇怪,我贴下主要代码:
图有属性解释:vertexlist,字典,{节点标识符:节点内容}; adj,字典,图地邻接表,{节点:连接的节点}.
节点对象主要属性是linkto,字典,{相连接的节点对象:权值}
addLinkto(linktovertex)是向linkto中添加{linktovertex:0}, setLinkedNodeWeight(linktovertex,weight)是改变linkto[linktovertex]=weight
图里添加节点地函数:
def addVertex(self,vertexid):
self.vertexlist.update({vertexid:Node(category="M")})
self.adj[vertexid]=[]
self.size=self.size+1
图里添加边地函数:
def addEdge(self,startvertexid,endvertexid,weight=0):
if not self.containsVertex(startvertexid):
print("The start vertex is not in the graph")
exit(0)
if not self.containsVertex(endvertexid):
print("The end vertex is not in the graph")
exit(0)
linktovertex=self.getVertex(endvertexid)
tmp=self.getVertex(startvertexid)
tmp.addLinkto(linktovertex)
tmp.setLinkedNodeWeight(linktovertex,weight)
self.adj[startvertexid].append(endvertexid)
图中得到节点函数:
def getVertex(self,vertexid):
if self.containsVertex(vertexid):
return self.vertexlist[vertexid]
else:
return None
测试的时候奇怪地事就发生了:
反复测试后发现,尽管只增加了一条边,但所有节点都和'2'连接在了一起,也就是所有节点地linkto属性中都莫名其妙地出现了'2'所对应的节点对象,我已经不知所措了
|
-
测试结果
|